|
|
|
@ -1,49 +1,93 @@
|
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
# Fonction pour afficher l'aide
|
|
|
|
|
BUILD_DIR="build"
|
|
|
|
|
OBJ_DIR="obj"
|
|
|
|
|
SRC_DIR="src"
|
|
|
|
|
APP_NAME="APP"
|
|
|
|
|
|
|
|
|
|
# success
|
|
|
|
|
function afficher_succes {
|
|
|
|
|
tput setaf 2
|
|
|
|
|
echo "✔ $1"
|
|
|
|
|
tput sgr0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# error
|
|
|
|
|
function afficher_erreur {
|
|
|
|
|
tput setaf 1
|
|
|
|
|
echo "✖ Erreur: $1"
|
|
|
|
|
tput sgr0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function afficher_commande {
|
|
|
|
|
tput setaf 3
|
|
|
|
|
echo -e "\t$1"
|
|
|
|
|
tput sgr0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# --help
|
|
|
|
|
function afficher_aide {
|
|
|
|
|
echo "Utilisation : $0 [options]"
|
|
|
|
|
echo "Options :"
|
|
|
|
|
echo " -rbuild, -rb : Nettoyer avant de reconstruire et exécuter"
|
|
|
|
|
echo " -debug : Configurer la compilation en mode debug"
|
|
|
|
|
echo " -run : Exécuter l'exécutable généré"
|
|
|
|
|
echo " -clean : Nettoyer les fichiers générés"
|
|
|
|
|
echo " --help : Afficher l'aide"
|
|
|
|
|
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"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Configuration du répertoire de construction
|
|
|
|
|
BUILD_DIR="build"
|
|
|
|
|
# errors
|
|
|
|
|
function gerer_erreur {
|
|
|
|
|
local message=$1
|
|
|
|
|
local code=${2:-1} # Code de sortie par défaut : 1
|
|
|
|
|
afficher_erreur "$message"
|
|
|
|
|
exit "$code"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Vérification et création du répertoire de construction
|
|
|
|
|
if [ ! -d "$BUILD_DIR" ]; then
|
|
|
|
|
mkdir "$BUILD_DIR"
|
|
|
|
|
# build exist ?
|
|
|
|
|
if [ ! -d "$BUILD_DIR" ] && [ "$#" -gt 0 ] && [ "$1" != "--help" ]; then
|
|
|
|
|
mkdir "$BUILD_DIR" || gerer_erreur "Impossible de créer le répertoire $BUILD_DIR."
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Fonction pour nettoyer
|
|
|
|
|
|
|
|
|
|
BUILD_DIR="build"
|
|
|
|
|
|
|
|
|
|
# Clean
|
|
|
|
|
function nettoyer {
|
|
|
|
|
echo "Nettoyage en cours..."
|
|
|
|
|
make clean
|
|
|
|
|
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."
|
|
|
|
|
afficher_succes "Nettoyage terminé."
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Fonction pour construire
|
|
|
|
|
# build
|
|
|
|
|
function construire {
|
|
|
|
|
echo "Compilation en cours..."
|
|
|
|
|
make
|
|
|
|
|
local commande="gcc -c -O3 -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."
|
|
|
|
|
afficher_succes "Compilation terminée."
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Fonction pour exécuter
|
|
|
|
|
# Execute
|
|
|
|
|
function executer {
|
|
|
|
|
echo "Exécution de l'exécutable..."
|
|
|
|
|
./build/CMAKE
|
|
|
|
|
local commande="./$BUILD_DIR/$APP_NAME"
|
|
|
|
|
echo -e "➔ Exécution de l'exécutable..."
|
|
|
|
|
afficher_commande "$commande"
|
|
|
|
|
if [ -x "$commande" ]; then
|
|
|
|
|
"$commande" || gerer_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."
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Vérification des arguments
|
|
|
|
|
if [ "$#" -eq 0 ]; then
|
|
|
|
|
echo "Erreur : Aucune option spécifiée. Utilisez --help pour afficher l'aide."
|
|
|
|
|
if [ "$#" -eq 0 ] || [ "$1" == "--help" ]; then
|
|
|
|
|
afficher_aide
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Traitement des arguments
|
|
|
|
|
# arguments
|
|
|
|
|
while [ "$#" -gt 0 ]; do
|
|
|
|
|
case "$1" in
|
|
|
|
|
-rbuild | -rb)
|
|
|
|
@ -52,8 +96,11 @@ while [ "$#" -gt 0 ]; do
|
|
|
|
|
executer
|
|
|
|
|
;;
|
|
|
|
|
-debug)
|
|
|
|
|
echo "Configuration de la compilation en mode debug..."
|
|
|
|
|
make 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."
|
|
|
|
|
construire
|
|
|
|
|
executer
|
|
|
|
|
;;
|
|
|
|
|
-run)
|
|
|
|
|
construire
|
|
|
|
@ -67,8 +114,7 @@ while [ "$#" -gt 0 ]; do
|
|
|
|
|
exit 0
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "Option non reconnue : $1. Utilisez --help pour afficher l'aide."
|
|
|
|
|
exit 1
|
|
|
|
|
gerer_erreur "Option non reconnue : $1. Utilisez --help pour afficher l'aide."
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
shift
|
|
|
|
|