我通常使用以下选项将宏定义从"生成命令行"传递到"生成文件":
我还使用类似的编译器选项将宏定义从"makefile"传递到"源代码":
我现在需要的是,允许makefile的用户能够立即将任意宏定义从"make.exe命令行"传递到"源代码",而无需更改makefile中的任何内容.
因此用户可以键入:
然后,代码main.c可以直接看到var:
int main()
{
int i = var;
}
我通常使用以下选项将宏定义从"生成命令行"传递到"生成文件":
我还使用类似的编译器选项将宏定义从"makefile"传递到"源代码":
我现在需要的是,允许makefile的用户能够立即将任意宏定义从"make.exe命令行"传递到"源代码",而无需更改makefile中的任何内容.
因此用户可以键入:
然后,代码main.c可以直接看到var:
int main()
{
int i = var;
}
按以下方式调用make
命令:
make CFLAGS=-Dvar=42
确保在Makefile的compile命令中使用$(CFLAGS)
.正如@jørgensen所提到的,将变量赋值放在make
命令之后将覆盖Makefile中已经定义的CFLAGS
值.
或者,您可以在CFLAGS
之外的另一个变量中设置-Dvar=42
,然后在CFLAGS
中重用此变量,以避免完全重写CFLAGS
.