3

Visual Studio 提供了工具集的概念,例如对于 Visual Studio 2015 和可选的Windows XP Support for C++ ”包,有工具集v140v140_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) ”配置为“平台工具集“适用于所有目标。

如何在安装了适当的 Visual Studio 的 Windows 上告诉柯南使用特定的工具集?最好用于使用 CMake 作为生成器的 conanfiles。

我能想出的唯一方法是向我想与不同工具集一起使用的所有项目/conanfile.py 添加一个附加选项,并添加另一个包选项(例如用作-o toolset=v140_clang_c2)以添加到命令行CMake 的初始调用。

我希望这种可变性成为包管理器本身的一部分,而不是包编写者的责任。

4

1 回答 1

3

不,柯南不提供开箱即用的此功能。

(更新:现在确实如此,因为柯南 0.29)

如果您现在想使用它们,可以自定义柯南以处理不同的工具集,我会执行以下操作:

首先,扩展当前设置以考虑工具集。如果您广泛使用不同的工具集,我不会使用选项。您可以尝试将它们定义为 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

于 2017-02-08T22:48:46.910 回答