2012-07-30 25 views
7

Quiero incluir un archivo MAKE desde una biblioteca externa en el archivo MAKE de mi propio software. Lo más simple sería averiguar el código CMake para el equivalente de Makefile de include ${dir}/makefile.Incluir archivo MAKE externo con CMake

Pero tal vez debería dar un pequeño contexto. Estoy tratando de integrar PETSc (y SLEPc) en mi código. Aquí hay un código de ejemplo usando SLEPc (aunque PETSc es más o menos lo mismo):

hello: hello.o chkopts 
     -${CLINKER} -o hello hello.o ${SLEPC_LIB} 
     ${RM} hello.o 

include ${SLEPC_DIR}/conf/slepc_common 

Como se puede ver, se requiere un include de un archivo MAKE específico que incluye un montón de otros archivos make. Esto es un poco extraño porque parece que hubiera sido más simple tener un directorio de inclusión, pero aparentemente hay más de lo que yo entiendo. De todos modos, mi primera solución fue simplemente incluir el archivo MAKE que desea y ver si eso funciona.

Respuesta

0

Hay un include method como parte de CMake. Si configura el alcance de la política de manera adecuada (lo que no funcionó hasta que no creo que sea 2.8) debería manejar el uso duplicado del método PROJECT y darle los resultados deseados. No he intentado esto para estar seguro, pero vale la pena intentarlo.

1

creo que este requisito no encaja en el modelo de diseño de CMake en absoluto ya que se generaron los Makefile durante la fase de generación y uno de El principio fundamental de CMake es hacerlo multiplataforma, por lo que la mejor idea podría BE:

  1. reescribir el sistema de construcción externa en los scripts CRealice
  2. Incluya los guiones CRealice en su proyecto

Si el esfuerzo es enorme, puede probar con add_custom_target/add_custom_command para hacer algunos comandos de caja para ajustar los archivos generados, pero esos también importarían esfuerzos considerables: simplemente lea el manual y busque más oportunidades.

Cuestiones relacionadas