Bonjour,
Je commence tout juste à manier CMake et la possibilité de générer des projets Visual Studio avec cet outil. Pour le moment, j'essaye de reproduire un projet fait par des développeurs sous Visual Studio, c'est à dire une dll et une lib. Ces librairies s'appellent : core.dll et zlib.lib. J'ai réussi grâce à mes fichiers CMakeLists à reproduire les deux séparément... enfin plus ou moins, d'où la question suivante. Je ne suis pas développeur donc pardon d'avance si je n'emplois pas les bons termes certaines fois.
core.lib est liée dans ses propriétés à zlib.lib via : properties -> Common Properties -> References. Je voudrais reproduire cela avec CMake mais je n'y arrive pas. Pour que vous puissiez m'aider, voici déjà la structure des dossiers du projet (défini par le développeur, donc immuable) :
Dossiers
Projet/
---core/
------src/ (contenant fichiers .h et .cpp)
------CMakeLists.txt (fichier pour core.dll)
---external/
------CMakeLists.txt (fichier pour zlib.lib)
------zlib/
---------zlib-1.2.8/ (contenant fichiers .h et .c)
Et mes fichiers pour les deux projets :
CMakeLists (core.dll)
Les deux dernières lignes commentées sont les derniers essais que j'ai fait, mais sans succès.
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 #Configuration du projet project(core CXX) #add definitions #set(LIBRARY_OUTPUT_PATH_DEBUG vc2013_x64/bin/) set(BIN_PATH "../vc2013_x64d") set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${BIN_PATH}/bin/" ) set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${BIN_PATH}/bin/" ) set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BIN_PATH}/bin/" ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4") set_property(GLOBAL PROPERTY LINK_LIBRARY_DEPENDENCIES "yes") add_definitions(-D_UNICODE -D_USRDLL -DCORE_EXPORTS) add_definitions("/Gm")#"/GL" "/Gy" #remove_definitions add_definitions(-UCMAKE_INTDIR="Release") #Configuration de la librairie add_library( core SHARED ... .h et .cpp ) # link_directories("C:/Users/mea/Documents/developpement/Repos/corealpi2/build/lib/") # target_link_libraries(core zlib)
CMakeLists (zlib.lib)
De quel manière je peux reproduire le fait que zlib soit dans les "references" de core ?
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 #Configuration de ZLib PROJECT(zlib C) SET(BIN_PATH "../../core/vc2013_x64d") SET_TARGET_PROPERTIES(PROPERTIES LINKER_LANGUAGE C) set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${BIN_PATH}/lib/" ) set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${BIN_PATH}/lib/" ) set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BIN_PATH}/lib/" ) SET(CMAKE_C_FLAGS "${CMAKE_CXX_FLAGS} /W3") ADD_DEFINITIONS("/Gm" -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_UNICODE) ADD_LIBRARY( zlib STATIC ... .h )
Est-ce que je dois créer un troisième fichier CMakeLists pour faire cela ou tout réunir dans le même (mais à ce moment là certains flags/définitions ne seront plus bons ?) ?
Merci de votre aide.
Partager