2012-07-30 29 views
7

Desidero includere un makefile da una libreria esterna nel makefile del mio software. Il più semplice sarebbe quello di capire il codice CMake per l'equivalente Makefile di include ${dir}/makefile.Include makefile esterno con CMake

Ma forse dovrei dare un piccolo contesto. Sto cercando di integrare PETSc (e SLEPc) nel mio codice. Ecco il codice da un esempio utilizzando SLEPc (anche se PETSc è praticamente lo stesso):

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

include ${SLEPC_DIR}/conf/slepc_common 

Come si può vedere, si richiede un include di un makefile specifico che comprende un gruppo di altri makefile. Questo è un po 'strano perché sembra che sarebbe stato più semplice avere una directory di inclusione, ma a quanto pare ci sono più cose di quanto capisco. Ad ogni modo, la mia prima soluzione era semplicemente includere il makefile che voleva e vedere se funziona.

risposta

0

C'è un include method come parte di CMake. Se si imposta correttamente l'ambito della politica (che non ha funzionato fino a quando non credo 2.8), è necessario gestire l'uso duplicato del metodo PROJECT e fornire i risultati desiderati. Non l'ho provato, ma ne vale la pena.

1

Credo questo requisito non rientra modello di disegno di CMake a tutti come sono stati generati i Makefile fase generazione e di principio core CMake è quello di rendere piattaforma trasversale, quindi l'idea migliore potrebbe BE:

  1. riscrivere il sistema di generazione esterna negli script CMake
  2. Includere gli script CMake nel progetto

Se lo sforzo è enorme, puoi provare con add_custom_target/add_custom_command per eseguire alcuni comandi fuori dalla scatola per modificare i file generati, ma anche quelli richiederebbero notevoli sforzi: basta leggere il manuale e cercare più opportunità.

Problemi correlati