如何将宏定义作为参数传递给 make?

How can a macro definition be passed as an argument to make?

我希望通过将其作为参数传递给从命令行调用的 make 来定义 C 宏。

背景:我希望在选择某个构建选项时将指令 #define ENABLE_OPT 1 包含在我的 C 源代码中。因此,我希望通过 make 命令行而不是修改源代码 生成文件来完成此操作。

如何实现?我发现 make -DENABLE_OPT=1 -f Makefile 会抛出 'E'、'N' 等错误参数。

您可以使用 --eval,它会将字符串作为 makefile 语句求值:

make --eval="FLAGS+= -D ENABLE_OPT=1"

make 变量 FLAGS 然后用作编译器参数来编译代码。