我想追加這個字符串的CFLAGS不修改Makefile本身:追加shell命令CFLAGS
-frandom-seed=$(shell md5sum $< | sed 's/\(.*\) .*/\1/')
運行make不起作用之前簡單地附加到CFLAGS變量,因爲它不能在那個時候進行評估。
有沒有辦法做到這一點,而無需修改生成文件?
我想追加這個字符串的CFLAGS不修改Makefile本身:追加shell命令CFLAGS
-frandom-seed=$(shell md5sum $< | sed 's/\(.*\) .*/\1/')
運行make不起作用之前簡單地附加到CFLAGS變量,因爲它不能在那個時候進行評估。
有沒有辦法做到這一點,而無需修改生成文件?
選項1:
對於此選項,你必須能夠一次修改Makefile文件。更改Makefile中將修改或設置CFLAGS
爲override CFLAGS+=<current flags already being set in CFLAGS>
的行。所以,如果你目前有CFLAGS=-std=c99
在Makefile中,更改爲override CFLAGS+=-std=c99
然後,說你想添加-g
編譯,只需撥打做出像這樣:
make CFLAGS=-g
這將預先準備-g
到-STD = C99。
查看override directive瞭解更多信息。
選項2:
這是可能的使用運行時使傳遞-e選項。
-e給出了環境優先於變量從Makefile中採取的變量。如果你想覆蓋用別的東西CFLAGS
CFLAGS=-std=c++11 echoCFLAGS: @echo $(CFLAGS)
(-std = C99),後來乾脆:
例如,採取下面的Makefile
bash -c "export CFLAGS=-std=c++99"
make -e echoCFLAGS
這輸出「-std = c99」
個問題與選項2
1)這會不會讓你在你想要感追加,但你可以手動附加-frandom-seed=$(shell md5sum $< | sed 's/\(.*\) .*/\1/')
到任何的CFLAGS
原始值是在Makefile得到你想要的東西。
2)-e選項「不推薦使用」練習「」,如GNU make手冊所述。這是因爲「這會導致不同的用戶從同一個makefile獲得不同的結果」(GNU make Manual)。
makefile如何定義(和使用)'CFLAGS'變量? –