From 9d2afb792a100927b12eb06c30e8e1d614fb3151 Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Sun, 17 Sep 2023 22:44:38 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20CMake,=20Update=20du=20readme,=20A?= =?UTF-8?q?jout=20de=20fichiers=20de=20scripts=20pour=20chaque=20=C3=A9tap?= =?UTF-8?q?e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + CMakeLists.txt | 25 +++++++++++++++++++++++++ README.md | 41 +++++++++++++++++++++++++++++++++++++++-- run.bat | 5 +++++ run.sh | 2 ++ 5 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 run.bat create mode 100644 run.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c795b05 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..aeaf1cb --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.22) +# Global Variables +set(TARGET_NAME cpp_insa) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# Set the etape value +set(ETAPE "1" CACHE STRING "Entrez un nombre d'etape a compiler.") + +#Setting up the sources directory +file(GLOB SOURCES "${PROJECT_SOURCE_DIR}/src/etape${ETAPE}/*.cpp") + +# cpp_insa Project (source, header) +add_executable(${TARGET_NAME} ${SOURCES}) +# Adding the headers +target_include_directories(${TARGET_NAME} PUBLIC "include") + +# Adding compilation option depending on the OS +if(MSVC) + target_compile_options(${TARGET_NAME} PUBLIC /W3 /WX /DEBUG ) +else() + target_compile_options(${TARGET_NAME} PUBLIC -Wall -Wextra -Wpedantic -Werror -lstdc++) +endif() + diff --git a/README.md b/README.md index 84e0305..a330412 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,39 @@ -# cpp_insa -Module C++ INSA 4AE +# Module C++ INSA 4AE + +## Compiler le projet + +### Préparer la compilation + +Pour compiler le projet je recommande CMake, mais il est possible d'utiliser directement 'g++'/'gcc'. +Une simple commande vous permet de préparer les fichiers dépendant de l'étape : + +``` +mkdir build +cd build +``` +``` +cmake -DETAPE=2 .. +``` +_Dans cet exemple, l'étape 2 sera construite._ + +### Lancer la compilation + +Il suffit ensuite de construire l'executable dans le dossier désiré + +``` +cmake --build . +``` + +## Conseil pour compiler et executer efficacement + +Je vous suggère d'aller dans le dossier contenant l'executable dès que les deux étapes sont réalisées. Il vous suffit ensuite de lancer le script `.sh` ou `.bat` pour à la fois compiler et executer le code. + +Pour cela rendez vous à la racine du projet après avoir crée et préparer le build : +``` +./run.sh +``` +_Pour GNU GCC/G++ sur Linux_ +``` +run.bat +``` +_Pour MSVC sur Windows_ \ No newline at end of file diff --git a/run.bat b/run.bat new file mode 100644 index 0000000..8ae4f3c --- /dev/null +++ b/run.bat @@ -0,0 +1,5 @@ +echo off +cmake --build build +cd build/Debug +cpp_insa.exe +cd ../.. \ No newline at end of file diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..31d7791 --- /dev/null +++ b/run.sh @@ -0,0 +1,2 @@ +cmake --build build +./build/cpp_insa \ No newline at end of file