Сделайте FetchContent совместимым с find_package - PullRequest
2 голосов
/ 21 июня 2020

Я пытаюсь добавить все зависимости, необходимые для компиляции моего проекта через CMake. Это должно уменьшить накладные расходы, которые возникнут у других, когда они захотят скомпилировать проект в первый раз.

Чтобы добиться этого, я попытался использовать FetchContent. Пока все хорошо, когда я связываю сгенерированные цели, это вообще не проблема. Но теперь у меня есть библиотека, зависящая от другой библиотеки, которая не включена в качестве подмодуля. Библиотека пытается найти зависимость от find_package. Как я могу получить find_package для поиска библиотеки? LIB_DIR в каталог сборки и называется find_package

Здесь минимальный фрагмент моего кода CMake более позднего:

cmake_minimum_required(VERSION 3.14)

find_package(ZLIB)
if (NOT ZLIB_FOUND)
    FetchContent_Declare(zlib_fetch
        GIT_REPOSITORY https://github.com/madler/zlib.git
        GIT_TAG cacf7f1d4e3d44d871b605da3b647f07d718623f
        )
    FetchContent_MakeAvailable(zlib_fetch)
    set(ZLIB_DIR ${zlib_fetch_BINARY_DIR})
    message(${zlib_fetch_BINARY_DIR})
#simulates the call in the other library:
    find_package(ZLIB REQUIRED) 
endif (NOT ZLIB_FOUND)

1 Ответ

0 голосов
/ 09 июля 2020

Предполагая, что вы используете linux или OSX, вам нужно будет поместить свой library в свой LIBRARY_PATH и, в конечном итоге, также LD_LIBRARY_PATH. Конфигурация CMake find_package будет проверяться по умолчанию. Также проверьте эту документацию . Отметьте здесь для системы WIN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...