2010-08-30 67 views
19

我應該通過Makefile編譯用C編寫的程序。我應該在Makefile中插入一些選項,例如:-O2, -march=i686。我如何在Makefile中插入這個選項而不寫入它?在不編輯的情況下添加編譯器選項Makefile

+0

我們可以看到你的Makefile中已經有了什麼嗎? – Starkey 2010-08-30 17:59:33

+0

它必須是通用的Makefile – Gnufabio 2010-08-30 18:02:17

+1

http://stackoverflow.com/questions/1250608/passing-a-gcc-flag-through-makefile – 2016-02-22 14:52:35

回答

19

你應該使用像CFLAGS這樣的宏。查看GNU GCC documentation

像這樣的東西應該工作:

CFLAGS := $(CFLAGS) -O2 -march=i686 

或者,如果你不喜歡修改Makefile使用:

make CFLAGS='-O2 -march=i686' 

其他選項會雖然自動拾取。見overriding variables

+6

請注意,CFLAGS可能是從複雜的子宏創建的。重寫其中一個子宏可能會更好。如果在CFLAGS中沒有相互矛盾的選項,我經常使用''使CC =「gcc -O2 -march = i686」'「來達到理想的結果。 – 2010-08-30 18:23:28

+0

在我工作的地方,我們使用專用的用戶定義宏來處理這樣的事情 - ADDED_CFLAGS,ADDED_ASMFLAGS,ADDED_EXEFLAGS,... – Sparky 2010-08-30 19:06:39

+0

make文件中有時會有一些變量允許您在不重寫任何內容的情況下添加其他標誌:例如'XCFLAGS','XLIBS'。看看makefile。 – 2015-10-12 10:35:02

相關問題