CMake: ¿De qué sirve usar find_package () si necesita especificar CMAKE_MODULE_PATH de todos modos?
Estoy tratando de hacer funcionar un sistema de compilación multiplataforma 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 unafind_package()
que abre unFind*.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 CMake busca después deFind*.cmake
y agregué el directorio deSomeLib
donde elFindSomeLib.cmake
se puede encontrar, por lo quefind_package()
Funciona como se espera.
Pero esto es un poco raro porque una de las razones por las quefind_package()
existe es alejarse de las rutas no codificadas de forma cruzada.
¿Cómo se hace esto generalmente? Debería copiar elcmake/
directorio deSomeLib
en mi proyecto y establecer elCMAKE_MODULE_PATH
¿relativamente?