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:
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
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
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é:
cmake -G "Unix Makefiles"
Pas de problème.
Puis je fais:
Et voici ce qu'il me dit:
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...
Partager