Création hello world avec Cmake sur Vscode

clement -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour, je voudrais créer un exe grace a cmake pour cela j'aimerais avoir un premier cmakelist.txt en chapeau qui fera les add-subdirectory pour C1 et C2 j'aimerais qu'il puisse communiquer ensemble. je voudrais avoir un cmakeLists C1 ensuite qui se trouvera dans un chemin en dessous qui devra faire mon target-link-lib vers mon C2 pour prendre ses fonctions 

et je voudrais avoir un C2 donc qui avec un add-lib a une fonction juste pour dire "bonjour' mais je n'arrive pas a avoir le bon code pour mes 3 cmakelists.txt si 

une personne pourrais m'aider svp :)


Windows / Edge 116.0.1938.98

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
     

    Bonjour,

    Je n'ai pas tout compris, mais pour commencer as-tu lu ce tutoriel ?

    Je ne sais pas dans quelle mesure ça répondra à ta question, mais à titre indicatif, voici ce que je fais pour un projet dont le code C++ est dans src/

    ./CMakeList.txt

    cmake_minimum_required(VERSION 2.6)
    project(my_project)
    option(BUILD_DOCUMENTATION "Create and install the doxygen documentation" OFF)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -W -Wall")
    
    set(lib ${PROJECT_NAME})
    set(inc_dir "${PROJECT_SOURCE_DIR}/include/${PROJECT_NAME}")
    set(lib_dir "${PROJECT_BINARY_DIR}/lib")
    set(src_dir "${PROJECT_SOURCE_DIR}/src")
    
    set(LIBRARY_OUTPUT_PATH ${lib_dir}/${CMAKE_BUILD_TYPE})
    set(bin_dir "${PROJECT_BINARY_DIR}/bin")
    set(EXECUTABLE_OUTPUT_PATH ${bin_dir}/${CMAKE_BUILD_TYPE})
    
    add_subdirectory(src)

    ./src/CMakeLists.txt

    Ce fichier suppose que les sources (resp. headers) C++ sont suffixées ".cpp" (resp. .hpp")

    cmake_minimum_required(VERSION 2.6)
    set(lib                 ${lib}                 PARENT_SCOPE)
    set(lib_dir             ${lib_dir}             PARENT_SCOPE)
    set(src_dir             ${src_dir}             PARENT_SCOPE)
    set(inc_dir             ${inc_dir}             PARENT_SCOPE)
    set(CMAKE_CXX_FLAGS     ${CMAKE_CXX_FLAGS}     PARENT_SCOPE)
    set(LIBRARY_OUTPUT_PATH ${LIBRARY_OUTPUT_PATH} PARENT_SCOPE)
    
    #include(FindBoost)
    #find_package(Boost 1.36.0 REQUIRED graph)
    #link_directories(${Boost_LIBRARY_DIRS})
    #include_directories(${Boost_INCLUDE_DIRS})
    
    set(LIB_VERSION_MINOR 1)
    set(LIB_VERSION_MAJOR 0)
    configure_file(
        "${src_dir}/config.h.in"
        "${src_dir}/config.h"
    )
    
    file(GLOB_RECURSE lib_cpps "${src_dir}/*.cpp")
    file(GLOB_RECURSE lib_hpps "${src_dir}/*.hpp")
    include_directories ("${src_dir}")
    add_library(${lib} SHARED ${lib_cpps})
    install(TARGETS ${lib} DESTINATION ${LIBRARY_OUTPUT_PATH})
    install(FILES ${lib_hpps} DESTINATION ${inc_dir})

    src/config.h.in

    #define LIB_VERSION_MAJOR @LIB_VERSION_MAJOR@
    #define LIB_VERSION_MINOR @LIB_VERSION_MINOR@

    Bonne chance

    0