2.1.2 : Le script d'installation du projet
Nous allons voir dans cette section comment écrire le fichier install.sh à la racine du projet :
Ceci est in script bash classique pour compiler un projet :
1 |
#!/bin/bash
|
Faisons un petit test, afin d'avoir une compilation multi coeurs même sur mac :
1 2 3 4 5 |
if [[ "$OSTYPE" == "darwin"* ]]; then export nbproc=`sysctl -n hw.physicalcpu` else export nbproc=`nproc` fi |
Il est toujours utile de permettre à l'utilisateur de changer de prefix d'installation. Et nous ajoutons une petite partie pour les utilisateurs de anaconda. Si une variable CONDA_PREFIX ou CONDA_ENV_PATH existe, alors, nous somme dans un environnement anaconda et nous installerons notre projet dans celui-ci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
INSTALL_PREFIX="$1" if [ -z "$1" ] then if [ -z ${CONDA_ENV_PATH} ] then if [ -z ${CONDA_PREFIX} ] then INSTALL_PREFIX="$HOME/usr" else INSTALL_PREFIX=${CONDA_PREFIX} fi else INSTALL_PREFIX=${CONDA_ENV_PATH} fi fi export PATH=${INSTALL_PREFIX}/bin:${PATH} export LD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH} export DYLD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:${DYLD_LIBRARY_PATH} |
De la même façon que l'approche manuelle, nous supprimons le dossier build si il existe déjà et nous en créons un nouveau :
1 2 3 4 5 6 7 8 |
if [ -d build ] then echo "Remove existing directory build" rm -fr build fi mkdir -p build cd build |
Ensuite, nous appellons CMake avec le prefix d'installation :
1 2 3 4 5 6 |
cmake .. -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} if [ $? != 0 ] then echo "Error on cmake : exit -1" exit -1 fi |
Nous compilons de manière parallèle en fonction du nombre de coeurs disponible noteBien sur que c'est exessif pour notre petit projet, mais comme ceci vous avez l'idée complète. :
1 2 3 4 5 6 |
make -j $nbproc if [ $? != 0 ] then echo "Error on make : exit -1" exit -1 fi |
Puis, nous installons le projet :
1 2 3 4 5 6 |
make install -j $nbproc if [ $? != 0 ] then echo "Error on install : exit -1" exit -1 fi |
Si vous ne voulez pas prendre en compte explicitement le tests de l'exécution de toutes les commandes précédentes, vous pouvez ajouter set -e -x au début du script pour que bash le fasse à votre place. Et vous pourrez enlever les conditions sur CMake et Make.
Le fichier install.sh complet :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#!/bin/bash if [[ "$OSTYPE" == "darwin"* ]]; then export nbproc=`sysctl -n hw.physicalcpu` else export nbproc=`nproc` fi INSTALL_PREFIX="$1" if [ -z "$1" ] then if [ -z ${CONDA_ENV_PATH} ] then if [ -z ${CONDA_PREFIX} ] then INSTALL_PREFIX="$HOME/usr" else INSTALL_PREFIX=${CONDA_PREFIX} fi else INSTALL_PREFIX=${CONDA_ENV_PATH} fi fi export PATH=${INSTALL_PREFIX}/bin:${PATH} export LD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:${LD_LIBRARY_PATH} export DYLD_LIBRARY_PATH=${INSTALL_PREFIX}/lib:${DYLD_LIBRARY_PATH} if [ -d build ] then echo "Remove existing directory build" rm -fr build fi mkdir -p build cd build cmake .. -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} if [ $? != 0 ] then echo "Error on cmake : exit -1" exit -1 fi make -j $nbproc if [ $? != 0 ] then echo "Error on make : exit -1" exit -1 fi make install -j $nbproc if [ $? != 0 ] then echo "Error on install : exit -1" exit -1 fi |
Vous pouvez le télécharger ici.