Make
了解簡單的makefile
.PHONY:hello hello:c_mem.c cc c_mem.c -o c_mem
make 命令將生成文件 c_mem。
.PHONY:hello hello:c_mem.c cc c_mem.c
make 命令將生成文件 a.out。
所有這些對我來說似乎都有意義。但是來自手冊:https ://www.gnu.org/software/make/manual/html_node/Rule-Introduction.html
目標通常是程序生成的文件的名稱;目標的範例是執行檔或目標文件。目標也可以是要執行的操作的名稱,例如“乾淨”(請參閱虛假目標)。
先決條件是用作創建目標的輸入的文件。一個目標通常取決於幾個文件。
假冒:https ://stackoverflow.com/questions/2145590/what-is-the- purpose-of-phony-in-a-makefile 所以我不確定
.PHONY:hello hello:c_mem.c cc c_mem.c -o c_mem
: hello和**hello:**是什麼意思?
我可以將makefile解釋為
整個項目名稱別名為hello,在文件 c_mem.c 的 hello 中執行以下命令
cc c_mem.c -o c_mem
Makefile 解釋如下:
target: <dependencies> commands to produce target
- 冒號
:
始終屬於目標。- 建構目標時將檢查所有依賴項(文件日期),因此所有需要的依賴項將在需要時自動更新。
- 重新建構依賴項後(比目標更新),執行列出的命令
如您提供的連結下的文章中所述:
PHONY targets are not associated with (output) files
因此,您始終能夠在需要時建構目標,而不受文件日期的影響(例如:)
make clean
:.PHONY: clean clean: rm -rf build/*
我建議使用
CMake
它,它是一個生成器Makefiles
,但在語法中更容易理解。Makefiles
會變得很亂。