IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

CMake: comment lier ma propre bibliothèque "précompilée" à l'exécutable ?


Sujet :

C++

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut CMake: comment lier ma propre bibliothèque "précompilée" à l'exécutable ?
    Bonjour tout le monde !

    Je suis sur un projet pas très compliqué en langage C.
    J'utilise CMake pour générer mes Makefiles et tout ce qui va avec.
    Voici l'architecture de mon projet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    .
    |-- bin
    |-- CMakeLists.txt
    |-- include
    |   |-- binary.h
    |   |-- main.h
    |   |-- pgm.h
    |   `-- quadtree.h
    |-- lib
    |   |-- CMakeLists.txt
    |   |-- include
    |   |   `-- exceptManager.h
    |   `-- libexcept-mgr.so
    `-- src
        |-- binary.c
        |-- CMakeLists.txt
        |-- main.c
        |-- pgm.c
        `-- quadtree.c
    bin: destiné à recevoir les fichiers objets et l'exécutable
    include: les headers du projets en lui-même
    lib: contient ma bibliothèque libexceptManager.so (elle est déjà générée, elle provient d'un autre de mes projets)
    lib/include: contient le header de libexceptManager.so
    src: contient les fichiers d'implémentation .c du projet en lui-même

    Alors voici mon problème: j'aimerai savoir quoi mettre dans mes fichiers CMakeLists.txt pour pouvoir lier proprement ma bibliothèque libexceptManager.so au projet. J'insiste sur le fait que ce projet se sert de cette bibliothèque, mais ne la génère pas...

    Je vous montre ce que j'ai mis dans ces CMakeLists.txt:
    CMakeLists.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    cmake_minimum_required(VERSION 2.6)
     
    project(
    	img-cpr
    	C
    )
     
    include_directories(
    	include/ 
    	lib/ 
    	lib/include
    )
     
    link_directories(lib/)
     
    add_subdirectory(
    	src/ 
    	bin/
    )
    src/CMakeLists.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    cmake_minimum_required(VERSION 2.6)
     
    file(
    	GLOB_RECURSE
    	src_files
    	*.c
    )
     
    add_executable(
    	pgmcpr
    	${src_files}
    )
     
    add_library(
    	except-mgr 
    	UNKNOWN
    	IMPORTED
    )
     
    SET_TARGET_PROPERTIES(
    	except-mgr
    	PROPERTIES 
    	IMPORTED_LOCATION 
    	../lib/libexcept-mgr.so
    )
     
    TARGET_LINK_LIBRARIES(
    	pgmcpr
    	except-mgr
    )
    lib/CMakeLists.txt
    Pour l'instant vide, c'est au cas où...

    Bien, à la racine du projet j'ai tapé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     cmake -G "Unix Makefiles"
    Pas de problème.
    Puis je fais:
    Et voici ce qu'il me dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Scanning dependencies of target pgmcpr
    [ 25%] Building C object bin/CMakeFiles/pgmcpr.dir/pgm.c.o
    [ 50%] Building C object bin/CMakeFiles/pgmcpr.dir/main.c.o
    [ 75%] Building C object bin/CMakeFiles/pgmcpr.dir/binary.c.o
    [100%] Building C object bin/CMakeFiles/pgmcpr.dir/quadtree.c.o
    make[2]: *** Pas de règle pour fabriquer la cible « ../lib/libexcept-mgr.so », nécessaire pour « bin/pgmcpr ». Arrêt.
    make[1]: *** [bin/CMakeFiles/pgmcpr.dir/all] Erreur 2
    make: *** [all] Erreur 2
    Ne me jetez pas des tomates svp

    Je remercie déjà ceux qui ont pris le temps de me lire et j'attends vos réactions ! Please help...

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut
    Tu utilises quelle version de CMake? Tu peux essayer avec une version nouvelle (2.8.2)?

Discussions similaires

  1. Comment créer sa propre bibliothèque ?
    Par dot-_-net dans le forum Débuter
    Réponses: 5
    Dernier message: 22/02/2008, 03h59
  2. [TPW] Comment puis-je créer ma propre bibliothèque ?
    Par zarda dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 18/12/2007, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo