Makefile g++ 使用命令行中的 -D 变量进行编译,默认值

Makefile g++ compile with -D variable from command line with default value

本文关键字:变量 编译 默认值 g++ 命令行 Makefile      更新时间:2023-10-16

我正在尝试设置一个makefile,它将采用命令行参数并将其传递给带有-D标志的编译器。此外,为变量设置默认值。

例如

$: Make program FOO=12

这将与-DFOO=12一起编译

另外,如果在命令行中没有给出FOO,如何设置默认值? 我正在使用c ++,所以我可以做

#ifndef FOO 
#define FOO 12
#endif 

但是我想要一种方法在生成文件中有一个默认值。

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

重新定义的宏是一个警告,所以如果你不关心警告,只需将默认值添加到标志中,然后附加用户输入,它将覆盖默认值。

如果您不喜欢警告,请使用-U参数。

-D FOO=1 -U FOO -D FOO=2