回答
構建,就像Makefile所理解的那樣,由許多目標組成。例如,建立一個項目,你可能需要
- 構建file1.o出file1.c中的
- 構建file2.o出file2.c中的
- 構建file3.o出file3.c中 的
- 構建executable1出file1.o和file3.o
- 構建executable2,如果你實現了這個工作流程的makefile file2.o
,你可以把每個目標separatel的年。例如,如果你寫了
make file1.o
它只會建立該文件,如有必要。
all
的名稱不固定。這只是一個傳統的名字; all
target表示如果你調用它,make將會生成全部需要什麼來製作完整版本。這通常是一個虛擬目標,它不會創建任何文件,而僅僅依賴於其他文件。對於上面的示例,建設所有必要的是構建可執行文件,其他文件作爲依賴項被引入。所以在makefile它看起來像這樣:
all: executable1 executable2
all
目標通常是makefile文件的第一,因爲如果你只是寫在命令行make
,沒有指定目標,將建立的第一個目標。你期望它是all
。
all
通常也是.PHONY
的目標。瞭解更多here。
不確定它代表什麼特別。這只是一個慣例,你提供了一個「全部」規則,通常它用來列出構建整個項目所需的所有子目標,因此名稱爲「全部」。唯一特別的地方是人們經常會把它作爲makefile中的第一個目標,這意味着僅僅輸入'make'就會和'make all'做同樣的事情。
目標「all」是虛擬目標的示例 - 磁盤上沒有任何名爲「all」的東西。這意味着當你做一個「全部製造」時,make始終認爲它需要構建它,並且執行該目標的所有命令。這些命令通常是構建makefile知道的所有最終產品的命令,但它可以執行任何操作。
虛擬目標的其他例子是「乾淨」和「安裝」,它們以相同的方式工作。
如果你還沒有讀過它,你應該閱讀GNU Make Manual,這也是一個很好的教程。
GNU Make手冊爲all
的list of standard targets提供了明確的定義。
如果Makefile文件的作者是繼該公約那麼目標應該all
:
- 編譯整個程序,但不建立文檔。
- 成爲默認目標。如剛剛運行
make
應該和make all
一樣。
爲了實現1 all
通常被定義爲一個.PHONY
目標取決於構成整個程序的可執行文件(或多個):
.PHONY : all
all : executable
爲了實現2 all
要麼是在限定的第一目標make文件或將其分配爲默認目標:
.DEFAULT_GOAL := all
- 1. 在makefile中使用'all'
- 2. 什麼?=在Makefile中做什麼?
- 3. word-break:break-all; - 什麼可以取代?
- 4. 「ALL [PRIVILEGES]」中包含什麼?
- 5. 'All'屬於Makefile文件?
- 6. $$ @和Makefile中的管道符號代表什麼?
- 7. Makefile使用C++代替g ++ - 爲什麼?
- 8. 我的makefile代碼有什麼問題?
- 9. ' - '在bash中代表什麼?
- 10. []在C#中代表什麼#
- 11. 什麼是makefile中的CPP_LINK?
- 12. 這行代碼在makefile中的含義是什麼?
- 13. 「@」在makefile中的含義是什麼?
- 14. 「$(@:%。o =%。d)」在makefile中意味着什麼?
- 15. 在Makefile中,CC?=是什麼意思?
- 16. obj _ $(variable_name)在makefile中做什麼?
- 17. 雙「at」(@@)符號在Makefile中做什麼?
- 18. 什麼是text-align:justify-all?
- 19. SHOW ALL顯示什麼?
- 20. 「Union all」有什麼用?
- 21. #在C++代碼中代表什麼?
- 22. 什麼是RelatedManager中的all()函數?
- 23. 在lex.yy.c查找表中代表什麼?
- 24. []代表什麼?
- 25. 這個Makefile代碼片段中的@ ... @是什麼意思?
- 26. Razor中的'_'代表什麼?
- 27. PyMethodDef中'ml'代表什麼?
- 28. LINQ中'1代表什麼?
- 29. 什麼是$ @和$ <Makefile?
- 30. 什麼是Makefile目標`.c.o`?
別忘了Mr.Proper(順便說一下mrproper)和distclean ... – t0mm13b 2010-03-25 11:31:22