是否可以在makefile中定义C宏?

时间:2011-03-14 17:54:46

标签: c makefile compilation

是否可以将等效的#define VAR(在C程序中)放入makefile中,以便可以控制程序的哪个部分进行编译?

3 个答案:

答案 0 :(得分:21)

相应于cc

上的linux联机帮助页
-D name=definition
           The contents of definition are tokenized and processed as if they appeared during translation phase three in a #define directive.  In
           particular, the definition will be truncated by embedded newline characters.

答案 1 :(得分:12)

修改您的Makefile以显示

  

CFLAGS = -D VAR1 -D VAR2 = *某事*

如果您在Makefile中使用默认规则,这应该会自动生效。如果你不这样做,并且明确地调用C编译器,那么请确保你正在写一些

的内容。
  

$(CC)$(CFLAGS)-c -o $ @ $<

如果上面的CFLAGS=...可以在命令行上使用而不是写在Makefile中(阅读man(1)手册页),那就更加可爱了;这样可以在最后时刻轻松重新配置编译参数,但不会保留参数。

最佳做法包括使用CPPFLAGS代替CFLAGS,并使用+=代替=;但是对这些功能的支持并不像上面那样普遍,并且取决于你的make系统。

答案 2 :(得分:7)

大多数编译器都支持命令行选项来指定#define。对于Visual C ++,这是/D option