如何在使用特定平台工具集时检查Visual C ++编译器版本?

时间:2014-06-17 14:55:11

标签: visual-c++ boost visual-studio-2013

我安装了多个版本的Microsoft Visual C ++(2005年,2008年,2012年,2013年) 我正在将我的项目从VC ++ 2008转移到2013年。

我将“平台工具集”设置为“Visual Studio 2013(v120)” 我将“附加库目录”设置为“C:\ local \ boost_1_55_0 \ lib32-msvc-12.0”(其中安装了新版本的Boost)。

到目前为止,我无法检查代码是否已使用编译器的版本12(2013)进行编译。我将“抑制启动横幅”设置为“否”。我得到的唯一细节是:

    ..\src.cpp(371): warning C4996: 'gmtime': This function or variable may be unsafe. Consider using gmtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    1>          c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\time.inl(101) : see declaration of 'gmtime'
...
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1
...
1>boostlibs.lib(archive_exception.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with '..\..\lib\debug\boostlibs.lib' or at 'C:\Users\me\prj\Debug\vc90.pdb'; linking object as if no debug info

这些行似乎表明使用了编译器的第9版。

是这样的吗?

如何设置不同的编译器?我如何检查它是否真的被使用过?

如何强制编译器和链接器使用特定版本的Boost?我已在“其他包含目录”和“其他库目录”中指定了其路径。

2 个答案:

答案 0 :(得分:2)

  

我如何检查它是否真的被使用过?

您可以查看来源中的compiler version macros

(可能是BOOST_STATIC_ASSERT(...)

  

_MSC_FULL_VER - 评估主要,次要和内部版本号   编译器版本号的组件。主要数字是   句点分隔版本号的第一个组成部分,未成年人   number是第二个组件,内部版本号是第三个   零件。例如,如果是Visual C ++的版本号   编译器是15.00.20706.01,_MSC_FULL_VER宏的计算结果为   150020706.类型cl /?在命令行中查看编译器的版本号。

     

_MSC_VER - 评估主要和次要数字组成部分   编译器的版本号。主要数字是第一个组成部分   周期分隔的版本号和次要号码是   第二部分。

     

例如,如果Visual C ++编译器的版本号是   17.00.51106.1,_MSC_VER宏的计算结果为1700。


  

这些行似乎表明使用了编译器的第9版。

......他们可能 - 另一方面,有可能(我猜测 - 我没有多VS机器检查)项目转换得到了搞砸了,你的VS2013项目现在包含对所有VC9内容的明确“引用”(vc90.pdb明确设置,包括来自VS2008的路径而不是正确的VS2013路径。)

确保检查项目设置


  

如何强制编译器和链接器使用特定版本的Boost?

粗略地说,您使用的Boost版本取决于您的包含路径的顺序。应该使用在包含路径上找到的第一个Boost版本。

由于Boost标头包含链接器编译指示,因此您不需要为boost lib文件显式设置任何链接器输入。当然,正确的lib文件需要位于链接器路径上。

答案 1 :(得分:0)

通过Visual C ++ GUI未能将编译器设置为新的12.0版本后,我手动修改了*.vcxproj文件,用“12.0”替换了所有“9.0”标记。

现在使用正确的编译器。