[英]Makefile dependency being ignored
我創建了一個簡單的makefile,以了解其工作原理的基本概念,並且其執行方式不符合我的預期。 請參閱以下內容:
test: test.c
gcc -o test test.c
我的理解是,這僅應在對test.c文件進行了更改的情況下運行。 問題在於,無論是否進行更改,它每次都會運行。
我注意到當我使用任意目標名稱時會發生這種情況。 如果我將目標名稱設為實際的文件名(例如“ test.exe”),則它可以正常工作,但是我所見過的所有教程都顯示了使用任意目標名稱的依賴項。 是否知道為什么會這樣?
在Windows下,Make自動將后綴.exe
添加到生成的程序中。
由於目標名稱與規則的結果不同,因此Make嘗試再次生成它。
您應該這樣編寫makefile:
EXE := test.exe
$(EXE): test.c
gcc -o $@ $^
如果您需要可移植性並且不想重寫規則,請使用以下命令:
EXE := test
if ($(OS),Windows_NT)
EXE := $(EXE).exe
endif
$(EXE): test.c
gcc -o $@ $^
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.