Précédent   Forum du club des développeurs et IT Pro > C et C++ > Outils pour C & C++ > Autres
Autres Vos questions sur les autres EDI ou éditeurs : Emacs, Vim, Kdevelop, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/05/2011, 17h14   #1
galerien69
Membre chevronné
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 450
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 450
Points : 689
Points : 689
Par défaut cmake & linking objects

Bonjour,

J'essaie actuellement d'écrire quelques tests unitaires à l'aide de cmake. J'ai néanmoins un problème d'include.

L'arborescence du projet à cette forme :
Code :
1
2
3
4
5
6
7
8
./sources
./sources/toto.h
./sources/toto.cxx
./sources/qt_ui
./sources/qt_ui/ui_toto.h
./tests
./tests/sources/
./tests/sources/totoTest.cxx
Ce que je désire c'est dans totoTest.cxx inclure toto.h
dans le dossier ./tests/sources/CMakeLists.txt, j'écris donc quelque chose du genre
Code :
1
2
3
4
5
6
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/sources)
IF(BUILD_TESTING)
  ADD_EXECUTABLE(totoTest totoTest.cxx)
#   TARGET_LINK_LIBRARIES(totoTest toto)
  ADD_TEST(NAME totoTest COMMAND totoTest
ENDIF(BUILD_TESTING)
et dans totoTest.h :
dans toto.h
l'executable toto se compile bien.
En revanche, l'executable totoTest me dit que dans le fichier toto.h on ne trouve pas ui_toto.h
Le truc, c'est quand dans le dossier ./sources, j'ai un CMakeLists.txt qui wrap mes .h pour les lier aux .ui de QT.

S'agit-il de se débrouiller pour faire construire le toto.h à l'aide du makefile généré par le CMakeLists.txt du dossier ./sources, ou peut-on simplement squizzer ce problème en liant directement l'executable totoTest à l'objet toto.o (au quel cas quel include à mettre?)

Un autre point que je n'ai pas compris est le role de target_link_librairies qui, commentée ou pas, n'influence en rien le problème.

Merci!
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 17h02   #2
galerien69
Membre chevronné
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 450
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 450
Points : 689
Points : 689
oki, alors voilà ce qu'il fallait faire :
on peut faire des includes directories pour les lib QT. et idem targetter les éventuelles dépendances.
la seule subilité c'est de penser à inclure les moc.cxx générés par QT.

Du coup (c'est pas super mais c'est une solution), jenquille une variable (qui correspond aux sources attachés au binaire) dans le cache depuis le CMakeLists.txt qui génère le binaire (à l'aide de set(maVar values CACHE INTERNAL DOCSTRING), et je recupere cette variable dans le CMakeLists.txt qui génère le binaire de test.
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 21h43   #3
aoyou
Membre émérite
 
Inscription : mars 2005
Messages : 860
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 860
Points : 964
Points : 964
Ce que tu fais me paraît bien compliqué...

Est-ce que tu utilises les macros Qt fournis par CMake ?
aoyou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 10h22   #4
galerien69
Membre chevronné
 
Homme
F5(){F5}
Inscription : avril 2008
Messages : 450
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : F5(){F5}
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2008
Messages : 450
Points : 689
Points : 689
ben j'utilise les QT_WRAP pour mocker les .ui de qt et les moc_... de qt, et c'est tout.

J'utilise aussi les variables QT_xxx_DIR pour les eventuelles librairies QT utilisées.

Pour l'instant, je transforme l'ensemble des sources de mon exe en exeLib, et crèe mes exe de tests en ajoutant la target_library exeLib ( et les éventuelles libs externes ).
galerien69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h35.


 
 
 
 
Partenaires

Hébergement Web