Bonjour,
J'essaie de créer une librairie en utilisant Cmake, plus précisément le "modern cmake". Elle est composé de 3 niveaux de dossiers MaLibrairie (ML)- SousDossier (SD) - SousSousDossier(SSD). Dans chacun de mes dossier j'ai un CMakeLists.txt que vous trouverez ci dessous. Je les compile sans problème, je génère en spécifiant le dossier d'installation. Sauf qu'en allant dans mon dossier d'installation, je n'ai rien ...
L'idéal serait même à terme de générer une lib par SousDossier, histoire de complexifier jusqu'au bout.
Je précise que je suis sous Ubuntu 18.04.1 LTS et que j'utilise CMake pour l’exécution via l'interface graphique (j'ai fait un peu la flemmarde sur ce coup et je ne suis pas passée via la terminal). Je précise également que c'est mon tout premier projet, je débute vraiment sur le sujet il y a certainement un ou des problèmes que je n'arrive pas à identifier.
////////////////////////////////////////
Tout code en commentaire, hors Todo / TD, est du code que je n'arrive pas à placer ou que je ne sais pas si il est nécessaire pour la génération
MaLibrairie :
SousDossier :
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
31
32
33
34
35
36
37
38
39 cmake_minimum_required(VERSION 3.0) cmake_policy(VERSION 3.0.0)#for MSVC # Set a default build type if none was specified if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) message("Setting build type to 'Release' as none was specified.") set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE) # Set the possible values of build type for cmake-gui set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release") endif() # Set a default C++ compile flag set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DEX2" CACHE STRING "Set C++ Compiler Flags" FORCE) project(ML DESCRIPTION "My Lib" LANGUAGES CXX VERSION 0.1.0) # ---- Find Packages ----#Todo later #find_package( LibExtern REQUIRED) #Todo later #target_link_libraries(ML LibExtern::LibExtern) #option is the default option and appear in the interface option(SD "Set ON to Build CV Module" ON) if(SD) include_directories("${PROJECT_SOURCE_DIR}/SD") add_subdirectory(SD) set (EXTRA_LIBS ${EXTRA_LIBS} SD) endif(SD) #target_link_libraries (ML ${EXTRA_LIBS}) # marche pas, pourquoi ?
SousSousDossier :
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 cmake_minimum_required(VERSION 3.0) cmake_policy(VERSION 3.0.0)#for MSVC project(SD DESCRIPTION "SD" LANGUAGES CXX VERSION 0.1.0) #add_library(SD ALIAS ${PROJECT_NAME})#marche pas, pourquoi ? #set is the defaut and do not appear in cmake interface set(SSD ON) add_subdirectory(SSD) #target_link_libraries(SD SSD)#marche pas, pourquoi ?
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 cmake_minimum_required(VERSION 3.0) cmake_policy(VERSION 3.0.0)#for MSVC project(SSD DESCRIPTION "SSD" LANGUAGES CXX VERSION 0.1.0) set(SOURCE_FILES src/file.cpp include/file.h) add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES}) add_library(SD::SSD ALIAS ${PROJECT_NAME})#?::?::? target_include_directories( ${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include PRIVATE ${PROJECT_SOURCE_DIR}/src ) install(FILES SSD LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}) #essayer aussi TARGET
Partager