2010-08-30 68 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

相关问题