IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Systèmes de compilation Discussion :

Modern Cmake et création d'un librairie


Sujet :

Systèmes de compilation

  1. #1
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    212
    Points
    93
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 212
    Points : 93
    Par défaut Modern Cmake et création d'un librairie
    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 :

    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 ?
    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
     
    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 ?
    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
    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

  2. #2
    Membre régulier
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    212
    Points
    93
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 212
    Points : 93
    Par défaut
    Alors j'ai mergé les deux derniers fichiers pour obtenir une lib au niveau des SousDossier. Au niveau du install j'ai mis un TARGETS et revu les chemins lorsque c'était nécessaire.
    Le problème était que mon make et mon make install ne s'exécutait pas, j'ai redémarrer ma machine et miracle (parfois je n'essaie pas d'en savoir plus).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de "sous-librairie" dans une librairie SAS
    Par domalin dans le forum SAS Base
    Réponses: 4
    Dernier message: 16/05/2008, 10h40
  2. Réponses: 1
    Dernier message: 14/03/2008, 10h09
  3. Réponses: 1
    Dernier message: 20/06/2007, 13h34
  4. Création d'une librairie ???
    Par Mike888 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 10/10/2004, 13h16
  5. création d'une librairie dynamique
    Par bilo2000 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 26/08/2004, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo