簡體   English   中英

Makefile中以。開頭的目標的含義是什么,它與后綴規則有何不同/相似?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM