我正在将VC ++项目从Visual Studio 2005(VC8)迁移到Visual Studio 2008(VC9)。解决方案中的某些项目在项目设置的“附加库目录”字段中有第三方库的路径。路径看起来像这样:
.. \ SomeLibrary \ LIB \ VC9 \ X86
如果我可以使用Visual Studio的“属性页宏”替换编译器版本,那将非常有用,就像我可以使用$(ConfigurationName)代替“Debug”或“Release”一样”。像下面这样的东西是完美的:
.. \ SomeLibrary \ LIB \的 $(CompilerVersion) \ X86
不幸的是,我找不到合适的宏。
请注意,当我说'宏'时,我指的是Visual Studio的“Property Page Macros”,而不是C / C ++预处理器宏。据我所知,你不能在项目设置中使用预处理程序指令。
有谁知道这样做的方法?
答案 0 :(得分:7)
使用_MSC_VER
:
#ifndef _MSC_VER
// not VC++
#elif _MSC_VER < 1400
// older than VC++ 2005
#elif _MSC_VER < 1500
// VC++ 2005
#elif _MSC_VER < 1600
// VC++ 2008
#elif _MSC_VER < 1700
// VC++ 2010
#else
// Future versions
#endif
有关更复杂的示例,请参阅boost如何处理VC ++版本here
答案 1 :(得分:2)
您可以使用属性页宏$(PlatformToolsetVersion)或$(PlatformToolset) 例如,对于vc ++ 2012,$(PlatformToolsetVersion)解析为“110”,$(PlatformToolset)解析为“v110”。因此,在您的路径中添加“vc $(PlatformToolsetVersion)”会在vc11下添加“vc110”或在vc9下添加“vc90”。
答案 2 :(得分:1)
您是否尝试过_MSC_VER
。对于Microsoft的C ++编译器,这将给出编译器的主要版本号和次要版本号。它可以用作分隔符。