
Cmake Degy Delyency для менеджера пакетов Conan C и C ++.
cmake-conan . |
|---|
Интеграция cmake-conan в этом филиале develop2 для Conan 2 с использованием поставщиков зависимостей Cmake, даже если они еще не выпущены как 1,0, более стабильна, готова к производству и рекомендуется, чем Legacy cmake-conan для Конана. 1, пожалуйста, обновите To Conan 2 и новую интеграцию cmake-conan в этом филиале develop2 . |
Предварительные условия:
conanfile.txt или conanfile.py , чтобы перечислить необходимые зависимости. Во -первых, клонировать этот репозиторий в филиале develop2 .
git clone https://github.com/conan-io/cmake-conan.git -b develop2 Этот репозиторий содержит CMakeLists.txt с примером проекта, который зависит от fmt .
cd cmake-conan/example
mkdir build
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=../conan_provider.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release Убедитесь, что вы поместили в корне вашего проекта conanfile.txt или conanfile.py , перечисляя ваши требования. Вы можете увидеть conanfile.txt для примера или проверить документацию Conan для conanfile : .txt Docs, .py Docs.
При первом вызове Cmake для настройки проекта проходите -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=[path-to-cmake-conan]/conan_provider.cmake . Это гарантирует, что conan install вызывает из Cmake. Эта интеграция не требует каких -либо изменений в ваших сценариях CMakeLists.txt .
cd [your-project]
mkdir build
cmake -B build -S . -DCMAKE_PROJECT_TOP_LEVEL_INCLUDES=[path-to-cmake-conan]/conan_provider.cmake -DCMAKE_BUILD_TYPE=ReleaseCMakeDeps - для настройки сборки, которые в противном случае были бы предоставлены CMakeToolchain (например, сам компилятор или другие глобальные настройки сборки), пожалуйста, вызовите Конан отдельно в соответствии с документацией.find_package . Для зависимости, которые имеют логику вне find_package , например, путем прямых вызовов find_program , find_library , find_path или find_file , они могут работать неправильно.CMAKE_BUILD_TYPE (нельзя оставить пустым) Поставщик зависимостей Cmake-Conan создаст профиль CONAN, в котором настройки ( os , arch , compiler , build_type ) извлекаются из того, что Cmake обнаружил для текущей сборки. Конан использует два профиля для зависимостей, хоста и профилей сборки . Вы можете прочитать больше о них здесь. В Cmake-Conan поведение по умолчанию выглядит следующим образом:
default .default . Обратите внимание, что для работы выше, профиль default уже должен существовать. Если это не так, cmake-conan вызовет механизм автонетерации Конана, который пытается угадать систему по умолчанию.
Если вам нужно настроить профиль, вы можете сделать это путем изменения значения CONAN_HOST_PROFILE и CONAN_BUILD_PROFILE и передавая их в виде переменных кэша CMAKE. Некоторые примеры:
-DCONAN_HOST_PROFILE="default;auto-cmake" : выполнить автоматическую обработку, как описано выше, и отступление в профиль по умолчанию для чего-либо еще (поведение по умолчанию).-DCONAN_HOST_PROFILE=clang16 : не выполняйте автоматическую обработку и используйте профиль clang16 , который должен существовать в папке профилей CONAN (см. Docs.)-DCONAN_BUILD_PROFILE="/path/to/profile" : альтернативно, предоставьте путь к файлу профиля, который может быть где угодно в файловой системе.-DCONAN_HOST_PROFILE="default;custom" : полуколонный список профилей. Будет использован составной профиль (см. DOCS) - составлен слева направо, где справа имеет самый высокий приоритет. Поставщик зависимостей Cmake-Conan будет автоматически расстегнуть и передавать информацию о профиле, как описано выше. Если вызов команды conan install должен быть настраивался дальше, можно использовать переменную CONAN_INSTALL_ARGS .
CONAN_INSTALL_ARGS инициализируется для передачи --build=missing . Если вы настраиваете эту переменную, имейте в виду, что Conan вернется к поведению по умолчанию, если вы не указате флаг --build .conanfile.txt|.py и формат вывода ( --format ).--build=never;--update;--lockfile-out='' Есть некоторые тесты, вы можете запустить на Python, например, с Pytest:
$ pytest -rA