Création hello world avec Cmake sur Vscode

clement - 24 oct. 2023 à 09:21
mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 - 25 oct. 2023 à 19:16

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

A voir également:

1 réponse

mamiemando Messages postés 33088 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 30 avril 2024 7 751
Modifié le 25 oct. 2023 à 19:19

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