#cmake #configuration #conan
#cmake #конфигурация #конан
Вопрос:
Я хочу создать оболочку conan поверх исходных текстов проекта, которые можно загрузить.
Обратите внимание, что я не могу ничего изменить в этом проекте; Мне просто указан URL-адрес, с которого его можно загрузить.
Я знаю, как загрузить и распаковать исходные тексты проекта (используя tools
модуль), добавив некоторый код в source()
метод в conanfile.py
.
Этот проект (после загрузки и распаковки) может быть собран с помощью cmake и может использовать Boost.
Поэтому я добавил boost/1.75
build_requires
(я выбрал версию произвольно).
На этапе настройки cmake этого проекта можно передать папку местоположения Boost в качестве аргумента cmake (например -DWITH_BOOST=path_name
).
Но из этого build()
метода я не знаю, как получить папку, в которой установлен Boost 1.75, в кэше conan. Зная это, я бы затем передал его cmake.configure(...)
вызову.
Есть ли способ получить папку пакета зависимости изнутри conanfile.py
? Возможно, используя что-то вроде self.build_requires['boost/1.75'].package_folder
?
Комментарии:
1. Вам не нужно передавать исходную папку. Поскольку вы используете CMake, Conan может генерировать cmake , cmake_paths , cmake_find_package , которые находят все заголовки для вас.
2. По вашим словам, conan автоматически
-DWITH_BOOST=boost_dependency_path
волшебным образом добавит в конфигурацию cmake исходный проект, о котором он что-нибудь знает?3. Это добавит, если рецепт подготовлен для этого, и если вы используете помощник, который передает все определения cmake, включая то, что вы упомянули. Обертки cmake — это те, которые я прокомментировал ранее. Если вы хотите увидеть команду cmake, выполняемую Conan, вы можете установить env var CONAN_PRINT_RUN_COMMANDS .