我有两个平台工具集:v110 和 v110_xp 用于我的项目,根据所选平台,我想包含/排除要编译的部分代码。
_MSC_FULL_VER
并且$(PlatformToolsetVersion)
对于这两个平台工具集具有完全相同的价值。或者,我尝试使用$(PlatformToolset)
如下:
_MSC_PLATFORM_TOOLSET=$(PlatformToolset)
但问题是那$(PlatformToolset)
是非数字的。想知道如何将这个非数字值用作预处理器指令?
尝试了几种解决方案我发现
_MSC_PLATFORM_TOOLSET='$(PlatformToolset)'
接着
#if (_MSC_PLATFORM_TOOLSET=='v110')
[Something]
#endif
工作正常,但
#if(_MSC_PLATFORM_TOOLSET == 'v110_xp')
[SomethingElse]
#endif
导致“字符常量中的字符过多”错误。
有关上下文,请参阅此类似问题: Visual Studio:如何以编程方式检查使用的 C++ 平台工具集