Bonjour !
J'ai voulu essayer d'utiliser make pour certains de mes projets en Pascal. Je vous montre ce que j'ai fait, au cas où cela intéresserait quelqu'un, et aussi dans le but de recevoir éventuellement des conseils ou des suggestions.
Je me suis appuyé sur ce tutoriel : Introduction à Makefile
J'ai fait cela sous Linux, mais sous Windows cela fonctionne aussi, à condition que l'outil make soit installé.
J'ai donc écrit plusieurs versions d'un fichier Makefile, pour un programme qui s'appelle alouette (mais peu importe, vous remplacerez ce nom par celui de n'importe quel autre programme).
Première version du fichier Makefile :
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 alouette: alouette.pas mkdir -p units fpc -FcUTF8 -B -Mobjfpc -Sah -FUunits alouette.pas -oalouette -dDEBUG -ghl clean: rm -f units/*.o rm -f units/*.ppu
Les fichiers Makefile et alouette.pas se trouvent dans le même dossier. J'ouvre donc un terminal dans ce dossier, et je tape make, pour compiler le programme, puis make clean pour supprimer les unités compilées.
Deuxième version, où l'on utilise des variables (voyez le tutoriel) :
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 PC=fpc PFLAGS=-FcUTF8 -B -Mobjfpc -Sah -FUunits -dDEBUG -ghl alouette: alouette.pas mkdir -p units $(PC) $(PFLAGS) alouette.pas -oalouette clean: rm -f units/*.o rm -f units/*.ppu
Troisième version, avec des "variables internes" :
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 PC=fpc PFLAGS=-FcUTF8 -B -Mobjfpc -Sah -FUunits -dDEBUG -ghl alouette: alouette.pas mkdir -p units $(PC) $^ -o$@ $(PFLAGS) clean: rm -f units/*.o rm -f units/*.ppu
Quatrième version, où l'on définit une variable nommée DEBUG, afin de pouvoir choisir le mode de compilation :
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 PC=fpc DEBUG=true ifeq ($(DEBUG),true) PFLAGS=-FcUTF8 -B -Mobjfpc -Sah -FUunits -dDEBUG -ghl else PFLAGS=-FcUTF8 -B -Mobjfpc -Sh -FUunits -dRELEASE -CX -XX -Xs endif alouette: alouette.pas mkdir -p units $(PC) $^ -o$@ $(PFLAGS) clean: rm -f units/*.o rm -f units/*.ppu
Pour compiler en mode RELEASE, on utilisera la commande make DEBUG=false. En effet, la valeur donnée dans la ligne de commande est prioritaire sur celle qui est écrite dans le fichier.
Dernière version, pour pouvoir compiler au choix en 32 ou en 64 bits :
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
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 PC=fpc PC32=/home/roland/Applications/freepascal32/fpc PC64=/home/roland/Applications/freepascal64/fpc DEBUG=true ifeq ($(DEBUG),true) PFLAGS=-FcUTF8 -B -Mobjfpc -Sah -FUunits -dDEBUG -ghl else PFLAGS=-FcUTF8 -B -Mobjfpc -Sh -FUunits -dRELEASE -CX -XX -Xs endif alouette: alouette.pas mkdir -p units $(PC) $^ -o$@ $(PFLAGS) alouette32: alouette.pas mkdir -p units $(PC32) $^ -o$@ $(PFLAGS) alouette64: alouette.pas mkdir -p units $(PC64) $^ -o$@ $(PFLAGS) clean: rm -f units/*.o rm -f units/*.ppu
Si l'utilisateur tape simplement make, la compilation se fera avec le compilateur installé sur la machine. S'il tape make alouette32, c'est le compilateur 32 bits qui sera appelé.
Voilà. Qu'en pensez-vous ?
Partager