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?

Respuestas a la pregunta(4)

Su respuesta a la pregunta