配置 conan 配置文件时如何选择 msvc 编译器版本?

问题描述 投票:0回答:1

在柯南配置文件内部,我们可以选择要包含的配置文件,

compiler.version = msvc
compiler.version = 193

有人可以向我解释一下版本控制是如何工作的吗

msvc
。在
settings.yml
里面我可以看到可能的选项列表,

    msvc:
        version: [170, 180, 190, 191, 192, 193]

但是,这些与 Microsoft 的版本控制不一致。正如文档所说,_MSC_VER distinguishes between major and minor releases. It has the form: MMNN.

。不过选择的时候,

compiler=Visual Studio compiler.version=17
这与之前的公开版本有一致的映射,例如

查看发布历史记录。总之,conan

是如何想出这些
msvc
编译器版本的?

conan conanfile
1个回答
0
投票
Conan 使用

_MSC_VER

 编译器版本的前 3 位数字,原因如下:

    在 Conan 1.X 中,它使用 Visual Studio IDE 版本,例如 15/16/17,但这是一个糟糕的默认值,因为二进制兼容性是由工具集/编译器版本定义的,而不是 IDE 版本和较新的 IDE版本可以安装和使用旧的工具集/编译器版本,并实现相同的二进制文件,就好像它是使用与该工具集匹配的旧 IDE 版本构建的一样。
  • cl
     MSVC 编译器和用它构建的二进制文件的二进制兼容性对于相同的 IDE 版本通常非常好,并且到目前为止 IDE 版本(直到 VS 17.10 更新)与编译器版本的前 3 位数字匹配,也就是说,VS15-2017 有默认编译器 
    _MSC_VER = 191X
    ,VS16-2019 有 
    _MSC_VER = 192X
    ,VS17-2022 有 
    _MSC_VER = 193X
    
    
  • 虽然即使对于较小的 IDE 更新(以及
  • _MSC_VER
     的最后 4 位数字)也报告了一些二进制文件不兼容的情况,但这些问题非常特别,并且非常特定于某些在其上调整其代码的项目。
因此,使用前 3 位数字似乎满足了用户使用编译器版本而不是 IDE 版本的请求,并为社区提供了良好的默认二进制兼容性(如 ConanCenter 软件包)。想要在第四位数字之后模拟二进制兼容性的 Conan 用户也可以通过定义

compiler.update=[0-9]

 设置来实现。

© www.soinside.com 2019 - 2024. All rights reserved.