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)
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)
Les deux dernières lignes commentées sont les derniers essais que j'ai fait, mais sans succès.

CMakeLists (zlib.lib)
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
 
)
De quel manière je peux reproduire le fait que zlib soit dans les "references" de core ?

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.