Estoy tratando de hacer que un sistema de compilación multiplataforma funcione usando CMake. Ahora el software tiene algunas dependencias. Los compilé yo mismo y los instalé en mi sistema.
Algunos archivos de ejemplo que se instalaron:
-- 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
Ahora CMake tiene un archivo find_package()
que abre un Find*.cmake
archivo y busca la biblioteca en el sistema y define algunas variables comoSomeLib_FOUND
etc.
Mi CMakeLists.txt contiene algo como esto:
set(CMAKE_MODULE_PATH "/usr/local/lib/SomeLib/cmake/;${CMAKE_MODULE_PATH}")
find_package(SomeLib REQUIRED)
El primer comando define dónde busca CMake después de Find*.cmake
y agregué el directorio SomeLib
donde FindSomeLib.cmake
se puede encontrar, por lo quefind_package()
funciona como se esperaba.
Pero esto es un poco extraño porque una de las razones por las cuales find_package()
existe es para alejarse de los caminos codificados sin plataforma cruzada.
¿Cómo se hace esto generalmente? ¿Debo copiar el cmake/
directorio de SomeLib
en mi proyecto y configurar el CMAKE_MODULE_PATH
relativamente?