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