Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications
Applications Questions sur l'utilisation d'applications, du shell, et des interfaces graphiques (KDE, Gnome, XFCE... )
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 05/02/2010, 10h21   #1
Membre actif
 
Avatar de Biosox
 
Inscription : mai 2005
Messages : 298
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 298
Points : 151
Points : 151
Par défaut [cmake] ordre de build

Bonjour,

j'utuilise cmake depuis peu, et j'ai une question

Dans mon répertoire de travail, j'ai deux dossiers: MaLibrairie, dans lequel se trouve un CMakeLists.txt qui crée le Makefile pour... ma librairie (duh) et MonProgramme dans lequel se trouve un CMakeLists.txt pour mon programme, qui utilise ma libraire.

Dans mon répertoire de travail, j'ai un CMakeLists.txt "principal" qui contient (entre autres)
Code :
1
2
3
 
add_subdirectory( MaLibrairie )
add_subdirectory( MonProgramme )
Le but, c'est que je puisse simplement faire un "cmake . ; make" dans mon répertoire de travail.

Problème: comme MonProgramme a besoin de MaLibrairie, le CMakeLists.txt de MonProgramme contient un find_library pour trouver MaLibrairie. Quand rien n'est encore compilé, faire un "cmake ." dans le repertoire de travail échoue, car le 2ème CMakeLists.txt ne trouve pas MaLibrairie (normal: elle n'existe pas encore). Mais du coup, même ma librairie ne compile pas.

Existe-t'il un moyen pour forcer la génération du Makefile de MaLibrairie même si l'autre Makefile ne peut pas encore être crée (ainsi il me suffit de faire 2 fois "cmake . ; make", la première fois ça build la lib, la 2eme ça build le programme)?
Une autre solution me conviendrait, le but étant de ne pas devoir éditer le CMakeLists.txt a chaque fois...

Merci!
Biosox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2010, 11h03   #2
Membre expérimenté
 
Avatar de cboudy
 
Ingénieur informatique industrielle
Inscription : avril 2006
Messages : 381
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Ingénieur informatique industrielle

Informations forums :
Inscription : avril 2006
Messages : 381
Points : 525
Points : 525
si ta librairie fait partie du projet, il faut plutôt utiliser link_directories, add_library et target_link_libraries:
dans MaLibrairie/CMakeLists.txt :
Code :
add_library (malib SHARED lib.cpp)
dans MonProgramme/CMakeLists.txt :
Code :
1
2
3
4
include_directories (${MONPROJET_SOURCE_DIR})
link_directories (${MONPROJET_BINARY_DIR}/MaLibrairie)
add_executable (monprogramme main.cpp)
target_link_libraries (monprogramme malib)
cboudy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2010, 14h45   #3
Membre actif
 
Avatar de Biosox
 
Inscription : mai 2005
Messages : 298
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 298
Points : 151
Points : 151
mais... mais... ça marche!!!

merci beaucoup!
Biosox est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 09h03.


 
 
 
 
Partenaires

Hébergement Web