GNU Make是否有任何方法在Makefile本身中包含參數make
?具體來說,如果--check-symlink-times
參數總是適用於給定的Makefile,那麼有什麼方法可以在Makefile中進行註釋?而不是打電話在Makefile中包含參數
$ make --check-symlink-times
只要調用make本身並讓Makefile指定一些參數就好了。
$ make
GNU Make是否有任何方法在Makefile本身中包含參數make
?具體來說,如果--check-symlink-times
參數總是適用於給定的Makefile,那麼有什麼方法可以在Makefile中進行註釋?而不是打電話在Makefile中包含參數
$ make --check-symlink-times
只要調用make本身並讓Makefile指定一些參數就好了。
$ make
應該很容易。只要把它的規則,在最高層是這樣的:
all:
make --check-symlink-times rest
及以下的地方做真正的任務規則rest
。
我能想到的唯一的辦法就是有第二個makefile文件makefile.inner
或相似,並使用-f
調用從另一個或把你的源在一個子目錄,並使用-C
,這往往是一個好主意,反正
我不知道這個選項是否特別適用於這個機制(我相信有些不會在3.81中)但是GNU make確實支持這個概念,使用MAKEFLAGS
,如手冊的this section所示。
您可以在makefile中設置MAKEFLAGS
。
MAKEFLAGS := --check-symlink-times
這將啓用檢查此生成文件的符號鏈接的ctime。這似乎只適用於GNU make的更新版本,根據我的測試,它適用於版本4.1
,但不適用於版本3.81
。
如果不希望強制使用有限數量的「輸入」目標,該怎麼辦?如果你只做「全部」,你的解決方案就能正常工作,但如果休息取決於多個目標,我希望能夠獨立調用那些添加了標誌的目標? – kgraney
@ kgraney:將'all'改爲'.DEFAULT all'和'rest'爲'$(MAKECMDGOALS)'。而且你最好加上'-f'來指定一個單獨的makefile,否則你會以無限循環結束。 – Idelic