4

我正在将我们的 VC++ 项目从 Visual Studio 2005 (VC8) 迁移到 Visual Studio 2008 (VC9)。解决方案中的一些项目在项目设置的“附加库目录”字段中具有第三方库的路径。路径看起来像这样:
..\SomeLibrary\Lib\vc9\x86

如果我可以使用 Visual Studio 的“Property Page Macros”之一来替代编译器版本,这将非常有用,就像我可以使用 $(ConfigurationName) 来替代“Debug”或“Release”一样。类似以下的内容将是完美的:
..\SomeLibrary\Lib\ $(CompilerVersion) \x86

不幸的是,我找不到合适的宏。

请注意,当我说“宏”时,我指的是 Visual Studio 的“属性页宏”,而不是 C/C++ 预处理器宏。据我所知,您不能在项目设置中使用预处理器指令。

有谁知道这样做的方法?

4

3 回答 3

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++ 版本

于 2009-12-08T16:47:59.347 回答
2

您可以使用属性页宏 $(PlatformToolsetVersion) 或 $(PlatformToolset) 对于 vc++ 2012,例如,$(PlatformToolsetVersion) 解析为“110”,而 $(PlatformToolset) 解析为“v110”。因此,在路径中添加“vc$(PlatformToolsetVersion)”将在 vc11 下添加“vc110”或在 vc9 下添加“vc90”。

于 2013-03-09T21:26:13.007 回答
1

你有没有试过_MSC_VER。对于 Microsoft 的 C++ 编译器,这将给出编译器的主要和次要版本号。它可以用作分隔符。

于 2009-12-08T15:54:44.773 回答