Создание рецепта для проекта CMake, который находит свои зависимости с помощью find_package

conan

#conan

Вопрос:

Я хочу создать пакет Conan для проекта, который я нашел на Github. Этот проект является проектом CMake и зависит от openssl. Проект находит openssl с обычным find_package .

Очевидно, что в моем рецепте объявлена зависимость от openssl, но мне трудно понять, как мне получить find_package(openssl) внутри CMake проекта, чтобы найти openssl, полученный Conan?

Ответ №1:

Вам нужен генератор cmake_find_package .

 from conans import ConanFile

class Foo(ConanFile):
    requires = "openssl/1.1.1l"
    generators = "cmake", "cmake_find_package"

    ...
 

Это будет сгенерировано Findxxx.cmake для всех ваших зависимостей.

Если вы создаете пакеты в первый раз, я предлагаю вам прочитать, как создать пакет из официальных документов, и рекомендации по использованию из индекса Conan Center.

ОБНОВЛЕНИЕ: использование CMakeDeps

Для Conan 2.0 было внесено много улучшений, включая новый подход к генераторам. CMakeDeps — это новый способ использования при необходимости xxx-config.cmake . Это еще не задокументировано при начале работы, но его ссылка приводит очень простой пример.