添加编译器选项而不编辑Makefile

Gnu*_*bio 24 c makefile

我应该通过Makefile编译一个用C编写的程序.我应该在Makefile中插入一些选项,例如:-O2, -march=i686.如何在不写入文件的情况下在Makefile中插入此选项?

dir*_*tly 20

您应该使用像CFLAGS这样的宏.查看GNU GCC 文档.

这样的事情应该有效:

CFLAGS := $(CFLAGS) -O2 -march=i686
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想修改makefile,请使用:

make CFLAGS='-O2 -march=i686' 
Run Code Online (Sandbox Code Playgroud)

其他选项将自动获取.请参阅覆盖变量.

  • 请注意,CFLAGS可能是从复杂的子宏中创建的.你可能最好覆盖其中一个子宏.如果CFLAGS中没有矛盾的选项,我经常使用'`make CC ="gcc -O2 -march = i686"`来获得所需的结果. (8认同)
  • 有时,make 文件中有一些变量允许您在不覆盖任何内容的情况下添加其他标志:例如`XCFLAGS`、`XLIBS`。看看makefile就知道了。 (2认同)