2015-10-23 133 views
0

我想追加這個字符串的CFLAGS不修改Makefile本身:追加shell命令CFLAGS

-frandom-seed=$(shell md5sum $< | sed 's/\(.*\) .*/\1/') 

運行make不起作用之前簡單地附加到CFLAGS變量,因爲它不能在那個時候進行評估。

有沒有辦法做到這一點,而無需修改生成文件?

+1

makefile如何定義(和使用)'CFLAGS'變量? –

回答

0

選項1:

對於此選項,你必須能夠一次修改Makefile文件。更改Makefile中將修改或設置CFLAGSoverride 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)。

有關更多信息,請參閱thisthis link