有没有办法在 CMake 命令行参数或 conanfile.py 中指定 VCToolsVersion?

Posted

技术标签:

【中文标题】有没有办法在 CMake 命令行参数或 conanfile.py 中指定 VCToolsVersion?【英文标题】:Is there a way to specify VCToolsVersion in CMake command line arguments or conanfile.py? 【发布时间】:2021-12-17 21:52:11 【问题描述】:

我正在尝试创建一些公司代码的柯南包。代码位于 gitlab 存储库中,我无法修改它。我想为我的柯南包指定VCToolsVersion。最简单的方法是将 CMakeSettings.json 文件放入 repo 并将这些行放入其中。

"environments": [
  
      "VCToolsVersion": "14.24"
  
  ]

但由于我无法修改 repo,我必须在我的 conanfile.py 中提供 VCToolsVersion。我在conanfile.py中有如下构建方法。

def build(self):
    cmake = CMake(self)
    cmake.configure()
    cmake.build()

有没有办法可以在configure() 方法的参数中指定VCToolsVersion

cmake.configure(args="-Dvcvars_ver=14.24")

【问题讨论】:

你的意思是工具集版本吗? CMake 构建助手在其构造函数中接受工具集版本:docs.conan.io/en/latest/reference/build_helpers/… @uilianries 谢谢,我在toolset 参数中发现我做错了什么。 【参考方案1】:

感谢@uilianries,我找到了如何指定 MSVC 版本。

def build(self):
    cmake = CMake(self, toolset="v142,version=14.24")
    cmake.configure()
    cmake.build()

【讨论】:

以上是关于有没有办法在 CMake 命令行参数或 conanfile.py 中指定 VCToolsVersion?的主要内容,如果未能解决你的问题,请参考以下文章

CMAKE_CXX_COMPILER 未在 qtcreator 中设置

有没有办法或事件在运行时检索命令行参数

Windows + VS2019 + CMake + CLion + Conan:如何启用C++20?

CMAKE 使用环境变量而不将它们作为命令行参数传递?

SDL2 简明教程:使用 Cmake 和 Conan 构建 SDL2 编程环境

SDL2 简明教程:使用 Cmake 和 Conan 构建 SDL2 编程环境