簡體   English   中英

Makefile依賴性被忽略

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

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