Sugerencia Encuentra archivos<nombre>.cmake con un directorio personalizado
(1)
En CMake, ¿hay alguna forma de crear scripts de búsqueda integrados para priorizar un directorio personalizado que especificamos? Porque especialmente en Windows, los scripts de búsqueda de módulos generalmente no pueden detectar el módulo en, por ejemplo, los directorios de Visual Studio. Por lo tanto, generalmente tengo que configurar manualmente las rutas para las bibliotecas externas, lo cual es bastante agotador. En cambio, quiero que esos scripts se vean en un directorio personalizado, digamos primero la carpeta ''dependencias'' en el proyecto principal para que pueda colocar directamente esos externos en esa carpeta, lo cual es mucho más fácil que ponerlos en la carpeta VC o configurar manualmente el caminos.
La
CMAKE_PREFIX_PATH
variable
CMAKE_PREFIX_PATH
sirve exactamente para estos propósitos: insinuar la función
find_*
sobre la ubicación del elemento buscado.
Si bien la descripción de esta variable no tiene en cuenta la función
find_package
, la variable afecta
indirectamente a
ella: la mayoría de los scripts
Find<name>.cmake
utilizan las funciones
find_library
y
find_path
.
Tenga en cuenta que todas las funciones
find_*
tienen
un algoritmo preciso
para los elementos de búsqueda, y las rutas construidas con
CMAKE_PREFIX_PATH
se verifican antes que las del sistema.
Además,
CMAKE_PREFIX_PATH
afecta a otros procedimientos de búsqueda.
Por ejemplo, si el paquete 3D party proporciona
<name>Config.cmake
script en lugar de
Find<name>.cmake
one, este script también se busca con el uso de esta variable.
pkg_check_modules
también usa
CMAKE_PREFIX_PATH
para buscar archivos
.pc
, describe el paquete.
CMAKE_PREFIX_PATH
variable
CMAKE_PREFIX_PATH
se puede establecer como entorno uno (de forma dependiente de la plataforma y específica del uso), como parámetro para
cmake
llamada:
cmake -DCMAKE_PREFIX_PATH=<additional-path> <other-parameters>
o dentro del archivo
CMakeLists.txt
.
En el último caso, es mejor
agregar
directorios de búsqueda, por lo que el usuario de su paquete también puede establecer la variable para los paquetes de búsqueda no enviados con su proyecto:
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/dependencies")
Tenga en cuenta que la variable
CMAKE_PREFIX_PATH
no afecta la búsqueda del script
FindXXX.cmake
.
Para especificar el directorio donde se encuentra el script, use la variable
CMAKE_MODULE_PATH
.