Ajouter de l'étape de génération personnalisée dans CMake
J'essaye d'ajouter une étape de génération personnalisée dans CMake qui génère des fichiers. Je n'ai pas trouvé une description de la façon dont il fonctionne.
J'ai un projet pour lequel la source, l'en-tête & fichiers de mise en œuvre doivent être générés par le PMO pour le C++. ODB prend la classe en-têtes comme arguments et génère des fichiers source que je veux utiliser dans mon projet.
Droit maintenant, j'ai la commande suivante dans mon CMakeLists.txt:
add_custom_command(TARGET ${PROJECT_NAME}
PRE_BUILD
COMMAND odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate- query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp
DEPENDS ${PROJECT_NAME}
VERBATIM
)
Pour un fichier person.hpp
PMO devraient générer person-odb.hxx
, person-odb.cxx
, person-odb.ixx
mais la commande CMake j'ai utilisé n'est pas de générer quoi que ce soit. Dans un terminal cette commande fonctionne très bien.
Ce que je fais mal?
MODIFIER: Le problème peut être résolu en ajoutant les lignes suivantes:
set(FAKE_TARGET fakeTarget)
add_custom_target(fakeTarget
odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate-query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp
)
add_dependencies(${PROJECT_NAME} ${FAKE_TARGET})
OriginalL'auteur David Bulczak | 2013-08-25
Vous devez vous connecter pour publier un commentaire.
Pour moi, avec quelque chose de similaire, je viens de l'utiliser :
Nous n'utilisons pas de
DEPENDS
ouVERBATIM
.La
DEPENDS
option spécifier que la commande doit être exécutée seulement après que le projet que vous avez donné à cette option est construit.EDIT :
Peut-être que c'est pourquoi il ne fonctionne pas pour vous.
Un travail autour de peut être (un peu moche) :
DEPENDS
etVERBATIM
.regarde mon edit. J'utilise VS au travail, c'est pourquoi il est travaillé pour moi.
Ok. Merci. J'utilise gcc/maquillage et autres outils GNU. Existe-il d'autres façons de faire ajouter des pré étapes de génération en CMake?
Avec
add_dependencies(${PROJECT_NAME} FAKE_PROJECT)
J'ai ajouté les lignes suivantes à mon projet et maintenant il fonctionne très bien!
set(FAKE_TARGET fakeTarget) add_custom_target(fakeTarget odb -o /home/david/dev/ --std c++11 -I/home/david/dev/ -d sqlite --generate-query --generate-schema ${PROMOTER_LIB_PREFIX}/entities/person.hpp ) add_dependencies(${PROJECT_NAME} ${FAKE_TARGET})
OriginalL'auteur Pierre Fourgeaud
Façon dont je suis sur c'est:
La touche a pour ajouter encore .php les fichiers dans add_executable bloc.
OriginalL'auteur graywolf