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 :
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 :
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
54
55
56
57
58
|
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.