Visual studio 2015 如何在nmake中转义双引号

Visual studio 2015 如何在nmake中转义双引号,visual-studio-2015,visual-studio-2013,nmake,Visual Studio 2015,Visual Studio 2013,Nmake,我试图通过MS Visual Studio 2013+中的nmake脚本,通过/D标志将字符串文本传递给编译器。基本模式是: CPPFLAGS=/DSOME_STRING_VAR="asdf" main.exe: main.cpp $(CPP) $(CPPFLAGS) # ... 在main.cpp中,我希望能够执行以下操作: const char *some_string_var = SOME_STRING_VAR; main.cpp(271) : error C2065: 'a

我试图通过MS Visual Studio 2013+中的nmake脚本,通过
/D
标志将字符串文本传递给编译器。基本模式是:

CPPFLAGS=/DSOME_STRING_VAR="asdf"

main.exe: main.cpp
    $(CPP) $(CPPFLAGS) # ...
在main.cpp中,我希望能够执行以下操作:

const char *some_string_var = SOME_STRING_VAR;
main.cpp(271) : error C2065: 'asdf' : undeclared identifier
到目前为止,我尝试的每一种变化都会产生如下结果:

const char *some_string_var = SOME_STRING_VAR;
main.cpp(271) : error C2065: 'asdf' : undeclared identifier
我尝试了一个双引号
”,用插入符号转义
^“
,多次转义插入符号
^^^“
,并将双引号
”。据我所知,所有这些都是批处理脚本的转义语法,但它们在nmake中似乎不起作用

有没有办法在nmake中转义双引号,以便将它们正确地传递到compile命令中

对于额外的积分,nmake命令是由shell在批处理时执行的吗?也就是说,我需要担心这里的一级或两级转义吗


如果新版本启用了更干净的解决方案,我很乐意支持Visual Studio 2015+。

tldr:用反斜杠转义双引号


如果您的测试文件
main.cpp
为:

#include <iostream>
int main() {
  const char *some_string_var = SOME_STRING_VAR;
  std::cout << some_string_var << std::endl;
}
将根据需要工作,测试程序给出:

>.\main.exe
asdf
如果您的
makefile
是单行:

CPPFLAGS=/DSOME_STRING_VAR=\"asdf\"
然后:

也会起作用

我找不到这方面的任何参考。在VS2013和VS2017上进行了测试