2011-04-03 10 views
14

Tengo una lib que instalé a mano (a/usr/local) en un sistema Linux (Eigen3, por cierto). Hay un FindEigen3.cmake incluido con la lib, pero que no está instalado en ningún lugar de forma predeterminada.¿Cuál es el lugar correcto para los archivos FindXXX.cmake para libs compilados localmente?

Existe /usr/share/cmake-x.y/Modules donde CMake busca módulos adicionales, pero poner estos archivos allí no parece la manera de hacer las cosas. ¿Hay un lugar equivalente en/usr/local que también se escanea por defecto? ¿O cuál es la forma estándar de crear módulos de biblioteca personalizados?

(Aunque la cuestión no está estrictamente conectada a la programación, creo que los autores de la biblioteca también pueden encontrarse con la misma pregunta desde el otro lado:. Dónde colocar estos archivos al instalar manualmente)

Respuesta

6

Véanse los comentarios de la documentación CMake para el comando "find_package":

http://cmake.org/cmake/help/v2.8.8/cmake.html#command:find_package

Se habla de escribir un archivo "proyecto-config", y donde instalarlo, de tal manera que find_package (Eigen3) funcionará sin tener un módulo FindEigen3.cmake find ... Es detallado, pero la información está allí.

usuario Véase también contribuyeron páginas wiki como éste:

http://cmake.org/Wiki/CMake/Tutorials/How_to_create_a_ProjectConfig.cmake_file

+0

aunque yo no No tengo tiempo (en las últimas dos semanas: P) para comprobar esto en acción, esto era lo que estaba buscando, ¡gracias! – Latanius

3

Es necesario establecer la CMAKE_MODULE_PATH para incluir el directorio en el que se encuentra el archivo FindEigen3.cmake antes de llamar a find_package. Creo que:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} <your path>) 

hará el truco, pero no tienen una configuración para probar que está disponible en este momento lo que puede tener para dar masajes a esa técnica un poco.

3

En nuestro proyecto que ponemos módulos FIndXXX.cmake en carpeta del proyecto raíz dir/cmake/módulos. Para que esto funcione tiene que especificar en el directorio raíz del proyecto /CMakeLists.txt (similar a lo que ya ha dicho DLRdave):

conjunto (CMAKE_MODULE_PATH $ {} CMAKE_SOURCE_DIR/cmake/modules)

Cuestiones relacionadas