Bonjour,
Je débute sous cmake, mais mes besoin sont déjà important.
Je souhaite compiler un projet avec cmake, ce projet pour compiler doit générer cetain fichier a l'aide d'une commande
En gros, si j'ai monfichier.toto, une commande me permet de générer monfichier.c en dépendant de pleinfichiers.xml
Pour connaitre la liste des fichier xml dont je dépend, un appel a macommand monfichier.toto -deps me retourne, sur plusieur ligne, la liste des fichiers de dépendance.
J'avais écris la rêgle suivante :
FILE(GLOB_RECURSE toto_files ../../*.toto)
FOREACH(loop_var ${toto_files})
MESSAGE(STATUS "Generate ${loop_var}")
EXECUTE_PROCESS(COMMAND totobuilder ${loop_var} -monoption magic -deps OUTPUT_VARIABLE deps)
STRING(REPLACE "\n" " " deps "${deps}")
STRING(REPLACE ".toto" ".c" res "${loop_var}")
MESSAGE(STATUS "${loop_var} need ${deps}")
ADD_CUSTOM_COMMAND(
OUTPUT ${res}
COMMAND totobuilder ${loop_var} -monoption magic
DEPENDS ${loop_var} ${deps}
)
ENDFOREACH(loop_var)
Les problème :
1)
Déjà sur les dépendences, si ma commande retourne :
tutu.xml
titi.xml
tyty.xml
je pense créer la string :
tutu.xml titi.xml tyty.xml
Pourtant dans le makefile généré, je me retrouve avec une regle :
monfichier.c: tutu.xml\ titi.xml\ tyty.xml\
notez les "\" qui font que rien ne marche!!!
2)
Lorsque la commande est trop longue, j'ai l'impression qu'il "wrap" le makefile, du coup parfois " -monoption magic" se retrouve sur la ligne suivante, et rien ne marche non plus....
3)
dernier problème, mais un peu indépendant celui la, j'ai besoin de compiler les fichier C (*.c) avec g++, le pb, dans le fichier CMakeFiles/CompilerIdC/CMakeCCompilerId.c il ecrit au début du fichier les ligne suivante :
#ifdef __cplusplus
# error "A C++ compiler has been selected for C."
#endif
Comment éviter cela ???
Merci d'avance pour vos réponses.
@+
Partager