我正在尝试设置一个makefile,该makefile将使用命令行参数,并使用-D标志将其传递给编译器。另外,为变量设置默认值。
例如
$: Make program FOO=12
,它将使用-DFOO=12
此外,如果在命令行中未提供FOO
,该如何设置默认值?我正在使用c ++,所以我可以做
#ifndef FOO
#define FOO 12
#endif
但是我想要一种在makefile中具有默认值的方法。
答案 0 :(得分:1)
ifeq ($(FOO),) # check if FOO is not defined
CFLAGS= -DFOO=999 # if not defined, set a default value
else
CFLAGS= -DFOO=$(FOO) # or use the value from argument
endif
答案 1 :(得分:0)
重新定义的宏是警告,因此,如果您不关心警告,只需将默认值添加到标志中,然后在用户输入内容后面追加一个,它将覆盖默认值。
如果您不喜欢警告,请使用-U
参数。
-D FOO=1 -U FOO -D FOO=2