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 possui um find_package()
que abre um Find*.cmake
arquivo e pesquisa a biblioteca no sistema e define algumas variáveis como SomeLib_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 depois do Find*.cmake
e adicionei o diretório de SomeLib
onde ele FindSomeLib.cmake
pode ser encontrado, para que find_package()
funcione conforme o esperado.
Mas isso é meio estranho, porque uma das razões pelas quais find_package()
existe é fugir de caminhos codificados que não sejam de plataforma cruzada.
Como isso geralmente é feito? Devo copiar o cmake/
diretório de SomeLib
para o meu projeto e definir o CMAKE_MODULE_PATH
relativamente?