Uso algunas bibliotecas que no quiero construir como parte de cada proyecto que las usa. Un ejemplo muy comprensible es LLVM, que tiene 78 bibliotecas estáticas. Incluso tener el código cmake para encontrar e importar estos en cada cmakefile es excesivo.Para el comando cmake "incluir", ¿cuál es la diferencia entre un archivo y un módulo?
La solución obvia parece ser utilizar el comando "incluir" y factorizar fragmentos relevantes de la secuencia de comandos cmake en archivos * .cmake y configurar una variable de entorno CMAKE_MODULE_PATH.
Excepto que simplemente no funciona. Cmake no encuentra el archivo que especifico en el comando include.
En la casualidad, incluso intenté especificar la ruta en la variable de entorno de varias maneras, una con barras diagonales inversas, una con barras diagonales ... y reinicié el símbolo del sistema cada vez y comprobé que la variable de entorno era presente y correcto
En el manual de cmake, implica que un "archivo" es diferente de un "módulo": solo un módulo obtiene el tratamiento automático de agregar la extensión y buscar el camino. Pero no hay explicación de cuál es la diferencia. Supuse que la extensión faltante podría ser suficiente (como con los módulos estándar) pero claramente no lo es.
Buscar el manual de "módulo" no es de mucha ayuda ya que la palabra parece estar sobrecargada. Por ejemplo, un módulo también es una biblioteca dinámica cargada usando LoadLibrary/dl_open.
¿Alguien puede explicar cuál es la diferencia entre un archivo y un módulo en este contexto, y cómo creo mi propio módulo para que el comando cmake include pueda encontrarlo y usarlo?
Estoy usando cmake 2.8.1 en Windows.
EDITAR
Estoy bastante seguro de que el problema aquí no es la comprensión de cómo se supone que cmake para trabajar. Creo que lo que debería hacer es escribir algo con lo que find_package
puede trabajar.
Sin embargo, como todo está en orden, todavía estoy lejos de poder responder a mi propia pregunta.
Mirando hacia atrás en ese código ahora, me doy cuenta de que no anexo a 'CMAKE_MODULE_PATH'; Lo castigé por completo. Es posible que desee hacer algo más como: 'set (CMAKE_MODULE_PATH" $ {CMAKE_MODULE_PATH}; $ {CMAKE_CURRENT_SOURCE_DIR}/cmake ")' –
No tengo tiempo para comprobarlo ahora, pero se ve bien. Gracias. – Steve314
No estoy seguro de por qué pensé que esa variable era ahora una variable de entorno. Un caso de ver lo que estaba buscando, no lo que estaba allí, supongo. Hace poco vi el video techtalk de Google en YouTube, y señaló que las variables de entorno se evitan deliberadamente. De todos modos, aceptado y gracias. – Steve314