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?