Gérer References sous Visual Studio avec CMake
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:
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:
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.