Gcc 在makefile中导出预处理器宏

Gcc 在makefile中导出预处理器宏,gcc,makefile,g++,gnu-make,Gcc,Makefile,G++,Gnu Make,我想将预处理器宏从特定目标中的主makefile导出到内部makefile 例如: 主生成文件 target1 : CXXFLAGS+=-DNewFlag=NewFlag cd some_directory; make 这里我想使用CXXFLAGS的值,它是-DNewFlag=NewFlag,并且仅在某个目录/make的target1下定义 请告诉我如何实现这一点。除非您在子目录的makefile中对变量进行了安排,否则无法从命令行追加变量 最简单的方法是使用不同的变量,如下所示:

我想将预处理器宏从特定目标中的主makefile导出到内部makefile

例如: 主生成文件

target1 :
   CXXFLAGS+=-DNewFlag=NewFlag
   cd some_directory; make
这里我想使用CXXFLAGS的值,它是-DNewFlag=NewFlag,并且仅在某个目录/make的target1下定义


请告诉我如何实现这一点。

除非您在子目录的makefile中对变量进行了安排,否则无法从命令行追加变量

最简单的方法是使用不同的变量,如下所示:

target1:
        cd some_directory && $(MAKE) EXTRA_CXXFLAGS=-DNewFlag=NewFlag
CXXFLAGS += $(EXTRA_CXXFLAGS)
(注意:调用子MAKE时,应始终使用
$(MAKE)
${MAKE}
,切勿直接使用
MAKE
。)

然后在子目录makefile中执行以下操作:

target1:
        cd some_directory && $(MAKE) EXTRA_CXXFLAGS=-DNewFlag=NewFlag
CXXFLAGS += $(EXTRA_CXXFLAGS)

除非在子目录的makefile中对变量进行了安排,否则无法从命令行追加到变量

最简单的方法是使用不同的变量,如下所示:

target1:
        cd some_directory && $(MAKE) EXTRA_CXXFLAGS=-DNewFlag=NewFlag
CXXFLAGS += $(EXTRA_CXXFLAGS)
(注意:调用子MAKE时,应始终使用
$(MAKE)
${MAKE}
,切勿直接使用
MAKE
。)

然后在子目录makefile中执行以下操作:

target1:
        cd some_directory && $(MAKE) EXTRA_CXXFLAGS=-DNewFlag=NewFlag
CXXFLAGS += $(EXTRA_CXXFLAGS)

导出变量无法更改,因此请使用另一个变量名来执行此操作…Ankur,我无法理解您的意思。不要将CXXFLAG用作导出变量…导出变量无法更改,因此请使用另一个变量名来执行此操作…Ankur,我无法理解您的意思。不要将CXXFLAG用作导出变量。。