是否可以将等效的#define VAR
(在C程序中)放入makefile中,以便可以控制程序的哪个部分进行编译?
答案 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。