[英]What's the meaning of targets in a Makefile that start with a ., and how is it different/similar to suffix rules?
在Makefile中,我看到了以下內容:
all: .made
# ... some other code
.made: $(Program) bashbug
@echo "$(Program) last made for a $(Machine) running $(OS)" >.made
是.made
規則后綴規則按: https://www.gnu.org/software/make/manual/make.html#Suffix-Rules ?
此外,目標的所有規則都帶有.
在前面的后綴規則?
否則,以。開頭的目標的意義是什么? 似乎在https://www.gnu.org/software/make/manual/make.html#How-Make-Works中具有此意義:
默認情況下,make從第一個目標開始(不是名稱以“。”開頭的目標)。
但是沒有提到它的意義。
另外,如果這是一個后綴規則,那么.made
可以用作all規則的先決條件? (沒有提到后綴規則的目標可以用作其他規則的先決條件。)
PS:這個問題與的含義有關,但含義不同。 (點)在makefile中的目標之前 。 該問題明確要求使用的目標之間的差異。 和后綴規則的目標。
.made
規則是后綴規則.made
不可以,因為.made
不是“已知的后綴”。
此外,目標的所有規則都帶有
.
在前面的后綴規則?
不,僅那些點后單詞為“已知后綴”的單詞:
您的前兩個問題可以通過https://www.gnu.org/software/make/manual/make.html#Suffix-Rules回答:
通過將每個規則的目標與已定義的已知后綴列表進行比較,可以識別后綴規則定義。 當
make
看到目標為已知后綴的規則時,該規則將被視為單后綴規則。 當make
看到目標為兩個已知后綴串聯的規則時,該規則將被視為雙后綴規則。
在您的示例中, .made
是實際的文件名。 Makefile具有為其創建/更新文件的規則:
#vvvv
.made: $(Program) bashbug
@echo "$(Program) last made for a $(Machine) running $(OS)" >.made
# ^^^^^
一切都很正常; 它與任何其他名稱的工作方式相同。
前導點的唯一含義是按照約定使文件“隱藏”,即ls
將不顯示它(不指定-a
),純*
將不匹配它,依此-a
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.