在CPP文件中使用make文件字符串变量

Neo*_*low 5 c++ makefile

我在make文件中使用以下代码从CPP文件访问变量VENDOR_NAME.

EXTRA_DEFINE += -DVENDOR_NAME=$(VENDOR_NAME) VENDOR_NAME 包含一个字符串.

在我的cpp文件中,当我尝试使用此变量时,我收到的错误如下所示.

cout << VENDOR_NAME;

Feature1.cpp.bak.cpp:8:'default_Vendor'未声明(首先使用此功能) Feature1.cpp.bak.cpp:8:(每个未声明的标识符仅报告一次

我想这是因为我的字符串不包含双引号,编译器正在考虑将VENDOR_NAME的内容作为变量.

如何将此变量作为我的CPP文件中的字符串获取,以便我可以像使用它一样使用#define它?

谢谢...

Jer*_*fin 10

您的makefile将为编译器创建命令行.出现的问题是,如果你只是用引号括起来:

EXTRA_DEFINE += -DVENDOR_NAME="$(VENDOR_NAME)"
Run Code Online (Sandbox Code Playgroud)

... shell会将引号视为简单描述命令行参数,因此它可能会将它们删除(尽管它可能取决于您正在使用的shell).为了防止这种情况,您需要使用转义引号创建参数:

EXTRA_DEFINE += -DVENDOR_NAME="\"$(VENDOR_NAME)\""
Run Code Online (Sandbox Code Playgroud)

我认为大多数典型的shell,至少对于Windows和Linux来说,都会接受反斜杠作为保留引号的转义,但我确信至少有一个围绕你不得不以不同的方式进行引用.