Command line 在makefile中定义默认值

Command line 在makefile中定义默认值,command-line,makefile,Command Line,Makefile,我的makefile有这样的行 CFLAGS = -c -g -D OPT1 -D OPT2 make ARG1= OPT1 ARG2 =OPT2 我想像这样通过命令行传递这些参数 CFLAGS = -c -g -D OPT1 -D OPT2 make ARG1= OPT1 ARG2 =OPT2 如果我不通过命令行传递这些参数,我希望makefile使用makefile中定义的默认值。我该怎么做?只需在makefile中执行以下操作: OPT1 = MY_

我的makefile有这样的行

   CFLAGS = -c -g -D OPT1 -D OPT2
 make ARG1= OPT1 ARG2 =OPT2    
我想像这样通过命令行传递这些参数

   CFLAGS = -c -g -D OPT1 -D OPT2
 make ARG1= OPT1 ARG2 =OPT2    

如果我不通过命令行传递这些参数,我希望makefile使用makefile中定义的默认值。我该怎么做?

只需在makefile中执行以下操作:

OPT1 = MY_OPT_1 # defaults
OPT2 = MY_OPT_2

CFLAGS = -c -g -D $(OPT1) -D $(OPT2)
然后在命令行上:

$ make -e OPT1=SOME_OTHER_OPT1 OPT2=SOME_OTHER_OPT2
在命令行上为
OPT1
和/或
OPT2
指定falues时,这些将覆盖makefile中的默认值


请注意,在大多数情况下,您可能希望使用带有
make
-e
选项强制使用新的
OPT1
OPT2
值重新构建所有内容。

可能会重复棘手的内容,因为您不能在
-D
之后没有任何内容。请在c/cpp文件中使用#ifdef OPT2#endif