Конан: Как получить исходную папку зависимости изнутри `conanfile.py ?

#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 .