CMake: для чего используется find_package (), если вам все равно нужно указать CMAKE_MODULE_PATH?

Я пытаюсь заставить кросс-платформенную систему сборки работать с использованием CMake. Теперь у программного обеспечения есть несколько зависимостей. Я сам скомпилировал их и установил в своей системе.

Некоторые примеры файлов, которые были установлены:

-- Installing: /usr/local/share/SomeLib/SomeDir/somefile
-- Installing: /usr/local/share/SomeLib/SomeDir/someotherfile
-- Installing: /usr/local/lib/SomeLib/somesharedlibrary
-- Installing: /usr/local/lib/SomeLib/cmake/FindSomeLib.cmake
-- Installing: /usr/local/lib/SomeLib/cmake/HelperFile.cmake

Теперь CMake имеетfind_package() который открываетFind*.cmake файл и ищет библиотеку в системе и определяет некоторые переменные, такие какSomeLib_FOUND и т.п.

Мой CMakeLists.txt содержит что-то вроде этого:

set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)

Первая команда определяет, где CMake ищет послеFind*.cmake и я добавил каталогSomeLib гдеFindSomeLib.cmake можно найти, такfind_package() работает как положено.

Но это немного странно, потому что одна из причин, почемуfind_package() существует для того, чтобы уйти от жестко закодированных путей без кроссплатформенности.

Как это обычно делается? Должен ли я скопироватьcmake/ каталогSomeLib в мой проект и установитьCMAKE_MODULE_PATH относительно?

Ответы на вопрос(4)

Ваш ответ на вопрос