From 907eb982da26894dffb4611f5d4bcc18787c240b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Math=C3=A9o=20Hersan?= Date: Fri, 13 Oct 2023 22:08:03 +0200 Subject: [PATCH] Better makefile and trying some things in build.sh --- build.sh | 76 +++++++++++++++++++++++++----------------------------- build/APP | Bin 0 -> 33424 bytes makefile | 30 +++++---------------- 3 files changed, 42 insertions(+), 64 deletions(-) create mode 100755 build/APP diff --git a/build.sh b/build.sh index 0cc8112..3360e3b 100755 --- a/build.sh +++ b/build.sh @@ -4,15 +4,15 @@ BUILD_DIR="build" OBJ_DIR="obj" SRC_DIR="src" APP_NAME="APP" +GCC_OPTIONS="-c -O3" -# success +# Fonctions d'affichage function afficher_succes { tput setaf 2 echo "✔ $1" tput sgr0 } -# error function afficher_erreur { tput setaf 1 echo "✖ Erreur: $1" @@ -25,69 +25,63 @@ function afficher_commande { tput sgr0 } -# --help -function afficher_aide { - echo "Utilisation : $0 [options]" - echo "Options :" - echo -e "\t-rbuild, -rb : \t➔ Nettoyer avant de reconstruire et exécuter" - echo -e "\t-debug : \t➔ Configurer la compilation en mode debug" - echo -e "\t-run : \t➔ Exécuter l'exécutable généré" - echo -e "\t-clean : \t➔ Nettoyer les fichiers générés" - echo -e "\t--help : \t➔ Afficher l'aide" -} - -# errors -function gerer_erreur { - local message=$1 - local code=${2:-1} # Code de sortie par défaut : 1 - afficher_erreur "$message" - exit "$code" +# Fonction pour afficher les points avec un effet de saut +function afficher_points_saut { + for _ in {1..1}; do + echo -ne "\n\t⬇ ⬇ ⬇ \n\n" + sleep 0.5 + done } -# build exist ? +# Vérification et création des répertoires if [ ! -d "$BUILD_DIR" ] && [ "$#" -gt 0 ] && [ "$1" != "--help" ]; then - mkdir "$BUILD_DIR" || gerer_erreur "Impossible de créer le répertoire $BUILD_DIR." + mkdir "$BUILD_DIR" || afficher_erreur "Impossible de créer le répertoire $BUILD_DIR." fi - -BUILD_DIR="build" - -# Clean +# Nettoyer les fichiers générés function nettoyer { local commande="rm -rf $OBJ_DIR $BUILD_DIR" echo -e "➔ Nettoyage en cours..." afficher_commande "$commande" - make clean > /dev/null|| gerer_erreur "Erreur lors du nettoyage." + make clean > /dev/null || afficher_erreur "Erreur lors du nettoyage." afficher_succes "Nettoyage terminé." } -# build +# Compilation function construire { - local commande="gcc -c -O3 -o $OBJ_DIR/main.o $SRC_DIR/main.c" + local commande="gcc $GCC_OPTIONS -o $OBJ_DIR/main.o $SRC_DIR/main.c" echo -e "➔ Compilation en cours..." afficher_commande "$commande" - make > /dev/null|| gerer_erreur "Erreur lors de la compilation." + make > /dev/null|| afficher_erreur "Erreur lors de la compilation." afficher_succes "Compilation terminée." } -# Execute +# Exécuter l'exécutable function executer { - local commande="./$BUILD_DIR/$APP_NAME" + local executable="$BUILD_DIR/$APP_NAME" + local commande="./$executable" echo -e "➔ Exécution de l'exécutable..." afficher_commande "$commande" - if [ -x "$commande" ]; then - "$commande" || gerer_erreur "Erreur lors de l'exécution." + if [ -x "$executable" ]; then + afficher_points_saut + "$commande" || afficher_erreur "Erreur lors de l'exécution." else - gerer_erreur "Erreur lors de l'exécution. Le fichier $BUILD_DIR/$APP_NAME n'est pas exécutable." + afficher_erreur "Erreur lors de l'exécution. Le fichier $executable n'est pas exécutable." fi } -if [ "$#" -eq 0 ] || [ "$1" == "--help" ]; then - afficher_aide - exit 1 -fi +# Afficher l'aide +function afficher_aide { + echo "Utilisation : $0 [options]" + echo "Options :" + echo -e "\t-rbuild, -rb : \t➔ Nettoyer avant de reconstruire et exécuter" + echo -e "\t-debug : \t➔ Configurer la compilation en mode debug" + echo -e "\t-run : \t➔ Exécuter l'exécutable généré" + echo -e "\t-clean : \t➔ Nettoyer les fichiers générés" + echo -e "\t--help : \t➔ Afficher l'aide" +} -# arguments +# Boucle d'options while [ "$#" -gt 0 ]; do case "$1" in -rbuild | -rb) @@ -98,7 +92,7 @@ while [ "$#" -gt 0 ]; do -debug) echo -e "➔ Configuration de la compilation en mode debug..." afficher_commande "make debug" - make debug || gerer_erreur "Erreur lors de la configuration en mode debug." + make debug || afficher_erreur "Erreur lors de la configuration en mode debug." construire executer ;; @@ -114,7 +108,7 @@ while [ "$#" -gt 0 ]; do exit 0 ;; *) - gerer_erreur "Option non reconnue : $1. Utilisez --help pour afficher l'aide." + afficher_erreur "Option non reconnue : $1. Utilisez --help pour afficher l'aide." ;; esac shift diff --git a/build/APP b/build/APP new file mode 100755 index 0000000000000000000000000000000000000000..f8862236a1ee3e90410daf2740a85c3cd750367b GIT binary patch literal 33424 zcmeI5Uu;uV9LG;@%iLtZFogJTa-UEPVaN<2O0ZQLM=-2mGpk}e(5)NIwsu+Du(2sc zoqr!JizYmnkOdmo_4oI<-rGI^8F>h zp7Z;ibHDd@KIiuF+W=% zm#1!sMCVmZ)VehsZ7m-**9XgU%En8O7Dq|Ow9do_GB!X{sn_>NVKJ_qBC)KiWC4{c z_0iEfoyo@1rBtO}-s*voF^Ro;)mE=Ku627l)1OFo+4+@v?^NhX>@}~pACAJc-X3ZV>BpLPwG?(EXdeQ!#wuDrlH#&gb#Se_ zQl4%2TfJ(`H5M#fZzENOj`z7)e9oTOv1?~|`;Ou>lB=i-u~^s4=|C)Y7hLLSTU#^s`oV`Aj!mBXSPe|C+k~78FWgg9mYcrRs&2XFzaNcRpTscK zo)aB;&b=o0-2#`f0;(^aB4J!w$ zcZ}>a7#BQZHA)>;u46v!Uda6OuWN^Wp-4oz!_QurI`?AZ=*-2bdshE=erw><_X4lX zZM$>l;7d<+pFQ-!q4!TkQyx2IiarDg9`3qnF_VVSoJN;wpt2SS0U(=jdDJ<5>1O)>c6|1Lda`?RuItT_@hc}<9{MG@H9Yjw=9Bl{`rNw@gzDQ) F{R!AdG#mf` literal 0 HcmV?d00001 diff --git a/makefile b/makefile index 9693c9b..6de9008 100644 --- a/makefile +++ b/makefile @@ -1,34 +1,19 @@ - -# Compiler CC = gcc - -# Options de compilation pour le release -CFLAGS_RELEASE = -O3 -# Options de compilation pour le debug -CFLAGS_DEBUG = -g -Wall - -# Dossiers source SRC_DIR = src -# Dossiers pour les fichiers objets OBJ_DIR = obj - -# Fichiers source SOURCES = $(wildcard $(SRC_DIR)/*.c) - -# Fichiers objets OBJECTS = $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SOURCES)) - -# Nom de l'exécutable EXECUTABLE = APP - -# Répertoire de construction BUILD_DIR = build - -# Options pour l'exécutable LDFLAGS = +CFLAGS_RELEASE = -O3 +CFLAGS_DEBUG = -g -O0 -# Commandes +# Generate dependency files +DEPS = $(OBJECTS:.o=.d) +-include $(DEPS) +# Commands all: build build: $(BUILD_DIR)/$(EXECUTABLE) @@ -39,7 +24,7 @@ $(BUILD_DIR)/$(EXECUTABLE): $(OBJECTS) $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c @mkdir -p $(OBJ_DIR) - $(CC) -c $(CFLAGS_RELEASE) -o $@ $< + $(CC) -c $(CFLAGS_RELEASE) -MMD -MP -o $@ $< debug: $(MAKE) CFLAGS_RELEASE="$(CFLAGS_DEBUG)" build @@ -56,4 +41,3 @@ doc_doxygen: .PHONY: all build debug clean run doc_doxygen -