Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何将宏定义作为参数传递给make?_C_Makefile_Macros_Gnu Make - Fatal编程技术网

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

C 如何将宏定义作为参数传递给make?,c,makefile,macros,gnu-make,C,Makefile,Macros,Gnu Make,我希望通过将C宏作为参数传递给从命令行调用的make,来定义C宏 背景:当选择某个构建选项时,我希望指令#define ENABLE_OPT 1包含在我的C源代码中。因此,我希望这可以通过make命令行完成,而不是修改源代码或makefile 如何做到这一点?我发现make-DENABLE_OPT=1-f Makefile抛出的错误是“E”、“N”等无效参数 您可以使用--eval,它将字符串作为makefile语句进行计算: make --eval="FLAGS+= -D ENABLE_OPT

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

背景:当选择某个构建选项时,我希望指令
#define ENABLE_OPT 1
包含在我的C源代码中。因此,我希望这可以通过
make
命令行完成,而不是修改源代码或makefile

如何做到这一点?我发现
make-DENABLE_OPT=1-f Makefile
抛出的错误是“E”、“N”等无效参数

您可以使用
--eval
,它将字符串作为makefile语句进行计算:

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

然后将make变量标志用作编译代码的编译器参数。

make CFLAGS=“-DENABLE_OPT=1”相关问题谢谢。我在makefile中只定义了本地\u CFLAGS,所以这不会覆盖任何内容。听起来不错!即使之前定义了CFLAGS,也可以使用
CFLAGS+=
将宏添加到CFLAGS