venerdì 25 maggio 2012

CMake e sostituzione di variabili nei sorgenti

Se si sta compilando un progetto tramite CMake e si vuole avere la sostituzione di una variabile all'interno di sorgenti (che quindi devono essere compilati) è possibile usare le direttive set assieme a configure_file che con semplici passi consentono di ottenere lo scopo.
Ad esempio, si supponga di voler specificare un percorso come variabile definita al momento della compilazione: il file che contiene la variabile non ancora sostituito è config.h.in e deve essere modificato nel file generated/config.h:
  • nel file CMakeLists.txt occorre impostare una variabile, ad esempio XML_PATH con il valore desiderato:
set( XML_PATH "\"/tmp/roles.xml\"" )
configure_file( config.h.in ${CMAKE_BINARY_DIR}/generated/config.h )

  • sempre nel file CMakeLists.txt occorre indicare al compilatore di usare il file generato da CMake stesso invece che quello originale (senza la sostituzione della variabile):



include_directories( ${KDE4_INCLUDES} . ${CMAKE_BINARY_DIR}/generated/ )




  •  nel file che deve essere sottoposto a espansione di variabile si deve usare la sintassi speciale @NOME-VARIABILE-CMAKE@:
#define XML_SYSTEM_ROLES_REPOSITORY_PATH @XML_PATH@



Nessun commento: