CMake: De que uso é find_package () se você precisar especificar CMAKE_MODULE_PATH assim mesmo?

Estou tentando obter um sistema de compilação multiplataforma trabalhando com o CMake. Agora o software tem algumas dependências. Eu os compilei e os instalei no meu sistema.

Alguns arquivos de exemplo que foram instalados:

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

Agora o CMake tem umfind_package() que abre umFind*.cmake arquivo e procura a biblioteca no sistema e define algumas variáveis comoSomeLib_FOUND etc.

Meu CMakeLists.txt contém algo como isto:

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

O primeiro comando define onde o CMake pesquisa após oFind*.cmake e eu adicionei o diretório deSomeLib onde oFindSomeLib.cmake pode ser encontrado, entãofind_package() funciona como esperado.

Mas isso é meio estranho, porque uma das razões pelas quaisfind_package() existe é afastar-se de caminhos codificados que não sejam de plataforma cruzada.

Como isso geralmente é feito? Devo copiar ocmake/ diretório deSomeLib no meu projeto e defina oCMAKE_MODULE_PATH relativamente?

questionAnswers(4)

yourAnswerToTheQuestion