2017-02-08 1 views
2

Visual Studio предлагает понятие toolset s, например. для Visual Studio 2015 и опционально "Windows XP Support for C++" package, имеются инструменты v140 и v140_xp. В случае, если кто-то добавил пакет «Clang with Microsoft CodeGen», есть v140_clang_c2.Как указать набор инструментов компилятора Visual Studio с помощью Conan для CMake?

С CMake я могу использовать флаг командной строки -T, чтобы указать набор инструментов, который будет использоваться для файлов решений, сгенерированных с помощью CMake, например. cmake -T v140_clang_c2 сгенерирует файл решения проекта с помощью «Visual Studio 2015 - Clang с Microsoft CodeGen (v140_clang_c2)« настроен как «Platform Toolset» для всех целей.

Как сообщить Конан на Windows с соответствующей установленной Visual Studio для использования определенного набора инструментов? Предпочтительно для conanfiles с использованием CMake в качестве генератора.

Единственный способ, с помощью которого я мог бы придумать, - добавить дополнительный параметр ко всем проектам/conanfile.py. Я хотел бы использовать с различными наборами инструментов и добавить еще один вариант пакета (например, используемый как -o toolset=v140_clang_c2), который будет добавлен к командной строки начального вызова CMake.

Я ожидаю, что изменчивость станет частью самого менеджера пакетов, а не ответственности разработчиков пакетов.

ответ

3

Нет, конан не предоставляет эту функциональность из коробки.

Если вы хотите использовать их сейчас, конан могут быть настроены для обработки различных наборов инструментов, я бы сделал следующее:

Во-первых, расширить текущие настройки, чтобы учесть наборы инструментов. Я бы не использовал опции, если вы используете разные инструменты. Вы могли бы попытаться определить их как глобальные для 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

+1

Спасибо за обходной путь. Я [отправил запрос функции] (https://github.com/conan-io/conan/issues/966). –

Смежные вопросы