Visual Studio提供了工具集的概念,例如:对于Visual Studio 2015和可选的"Windows XP Support for C++" package,有工具集v140
和v140_xp
。如果有人添加了“ Clang with Microsoft CodeGen ”包,则会有v140_clang_c2
。
使用CMake,我可以使用-T
命令行标志来指定用于使用CMake生成的解决方案文件的工具集,例如cmake -T v140_clang_c2
将为所有目标生成项目解决方案文件,其中“ Visual Studio 2015 - Clang with Microsoft CodeGen(v140_clang_c2)”配置为“平台工具集”。
如何在Windows上使用适当安装的Visual Studio告诉 Conan 使用特定工具集?优选用于使用CMake作为发生器的conanfiles。
我能想出的唯一方法是为所有项目添加一个额外的选项/ conanfile.py我想使用不同的工具集并添加另一个包选项(例如用作-o toolset=v140_clang_c2
)被添加到CMake初始调用的命令行中。
我希望可变性成为包管理器本身的一部分,而不是包装编写者的责任。
答案 0 :(得分:3)
不,柯南不提供开箱即用的功能。
(更新:现在确实如此,因为柯南0.29)
如果您现在想要使用它们,可以自定义conan以处理不同的工具集,我会执行以下操作:
首先,扩展当前设置,以考虑工具集。如果您广泛使用不同的工具集,我将不会使用选项。您可以尝试将它们定义为Visual Studio的全局:
compiler:
...
Visual Studio:
runtime: [MD, MT, MTd, MDd]
version: ["8", "9", "10", "11", "12", "14", "15"]
toolset: [None, v140, v140_xp]
或者如果您想要更具体,请按照版本定义它们,例如:
compiler:
...
Visual Studio:
version:
"12":
toolset: [None, v120, v120_xp]
"14":
toolset: [None, v140, v140_xp]
然后,确实将选项传递给cmake的责任在于包创建者。我当然会添加
"-T %s" % self.settings.compiler.toolset
# or
"-T %s" % self.settings.compiler.version.toolset
到cmake命令参数。
可能值得打开一个问题,并尽可能与维护人员讨论,使其成为一项功能:https://github.com/conan-io/conan