Bonjour

j'essaie d'utiliser CMake pour générer les makefiles d'un gros projet qui était jusqu'à présent compilé avec make à partir de makefiles générés par SNIFF, un progiciel antédiluvien . Je débute completement avec Cmake, mais je compte beaucoup dessus, et il a l'immense avantage d'être toujours maintenu.

pour classer les sources les developpeurs ont eu l'idee de les organiser dans des sous répertoires. par exemple je vais avoir

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
src
    - lib1_ihm (contient des sources, puis les obj apres compil)
    - lib1_calc (contient des sources, puis les obj apres compil)
    - lib2_aux (contient des sources, puis les obj apres compil)
    - lib1_dll (contient seulement la dll resultant du link des obj de lib1_ihm et lib1_calc)
    - lib2_dll (contient seulement la dll resultant du link des obj de lib2_aux)
en gros une fois que les makefiles sont générés, make se balade d'un repertoire à l'autre pour compiler les objets puis construire les cibles.

Avec Cmake je ne retrouve pas cette façon de faire :
- on déclare une cible qui peut-être soit une lib soit un exe, sinon je pense que le make ne fait rien
- ou alors on peut faire un add_subdirectory pour que Cmake descende dans un sous repertoire
- ou enfin on remonte toutes les sources dans le CmakeList.txt de la lib


Est ce qu'il est possible de mixer un peu le tout pour avoir par exemple pour lib1_dll:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
add_subdirectory(../lib1_ihm)
add_subdirectory(../lib1_calc)
 
add_library(lib1_dll $lib1_ihm $lib1_calc)
avec dans lib1_ihm et dans lib1_calc des fichiers CmakeList.txt qui declarent juste la liste des fichiers à compiler?