我正在处理需要使用MS Visual Studio 2008 SP1的遗留项目(在C中,如果这很重要)。
具体来说,工具链中的一个工具会生成一个MSVC makefile(.mak
),然后由MSVC2008中的向导将其转换为项目文件(.vcproj
),在该文件中可以对其进行编译/调试。
我正在尝试定义一个预处理器符号(/D
),它通过模板makefile设置为等于环境变量。此环境变量的值是一个字符串,可能包含空格。
我无法通过实验或谷歌找到合适的语法。该向导似乎以一种不那么可预测的方式搞乱了引号和空格......例如,如果我放入(生成的)makefile
/D "MYSYMBOL=\"my string\"" /D "MYOTHERSYMBOL=\"someOtherString\"
Visual Studio的向导错误地将以下内容放在项目文件中:
/D /D "MYSYMBOL=\" my string\"" "MYOTHERSYMBOL=\" someOtherString\"
(请注意转义引号后的空格)。
类似地:
input : /D "MYSYMBOL=\"my string\"" /D "MYOTHERSYMBOL=\"someOtherString\"
output: /D /D "MYSYMBOL=\" my string\"" "MYOTHERSYMBOL=\" someOtherString\"
input : /D"MYSYMBOL=\"my string\"" /D"MYOTHERSYMBOL=\"someOtherString\"
output: /D"MYSYMBOL=\"my /D"MYOTHERSYMBOL=\"someOtherString\" string\""
input : /DMYSYMBOL=\"my string\" /DMYOTHERSYMBOL=\"someOtherString\
output: /DMYSYMBOL=\"my /DMYOTHERSYMBOL=\"someOtherString\" string\"
input : /DMYSYMBOL="""my string""" /DMYOTHERSYMBOL="""someOtherString"""
output: /DMYSYMBOL="""my /DMYOTHERSYMBOL="""someOtherString""" string"""
...etc.
有办法做到这一点吗?或者我应该完全遵循一个完全不同的方法来获取环境变量?