| | 3 | |
| | 4 | |
| | 5 | == Make & Makefiles == |
| | 6 | |
| | 7 | Les programmes complexes sont décomposés en ''unités de compilation'' ou encore |
| | 8 | ''modules''. Par exemple, une classe comme {{{Vector}}} sera associée à deux |
| | 9 | fichiers, {{{Vector.h}}} et {{{Vector.cpp}}} et un module {{{Vector.o}}}. |
| | 10 | Les modules ({{{.o}}}) doivent être recompilés lorsque leurs dépendances |
| | 11 | ({{{.h}}} ou {{{.cpp}}}) changent, c'est à dire que ces fichiers viennent |
| | 12 | d'être édités par le concepteur. On voit ainsi apparaître une relation de |
| | 13 | dépendance temporelle: le module doit être ''plus récent'' que les fichiers |
| | 14 | dont il dépend. Un programme complet pouvant comprendre plusieurs dizaines |
| | 15 | d'unités de modules, il est impossible de gérer manuellement sa recompilation. |
| | 16 | |
| | 17 | Le programme '''make''' apporte une solution à ce problème. '''make''' permet |
| | 18 | de décrire un graphe de dépendances temporelles ainsi que les action à effectuer |
| | 19 | lorsqu'une de ces dépendances n'est pas vérifiée. La figure (1) fourni un petit |
| | 20 | exemple de graphe, correspondant à ce TME. |
| | 21 | |
| | 22 | [[Image(Makefile-1.png)]] |
| | 23 | |
| | 24 | Le fichier de configuration de '''make''' se nomme {{{Makefile}}} et doit se |
| | 25 | trouver dans le répertoire courant dans lequel on lance la commande. |
| | 26 | |
| | 27 | === Anatomie d'une régle === |
| | 28 | |
| | 29 | Une régle se compose de trois parties: |
| | 30 | * Une cible (ou ''target'') : ce fichier doit être ''plus récent'' que toutes |
| | 31 | les fichiers de dépendance. |
| | 32 | * Les dépendances : une liste de fichiers dont les dates doivent être ''plus |
| | 33 | anciennes'' que la cible. |
| | 34 | * Une action : la commande à éxécuter pour satisfaire la dépendance. Dans notre |
| | 35 | cas, recompiler le module avec {{{g++}}}. |
| | 36 | |
| | 37 | [[Image(Makefile-rule-1.png)]] |
| | 38 | |
| | 39 | |
| | 40 | == Style de Codage == |
| | 41 | |
| | 42 | '''Le beau, le bien et le bon'''. |
| | 43 | |
| | 44 | Les Grecs n'avait qu'un seul mot pour ces trois concepts, c'est à dire que pour |
| | 45 | eux ils étaient indiscernables. |
| | 46 | |
| | 47 | Dans le cadre du développement logiciel, on adopte une approche similaire. |
| | 48 | Un programme qui fonctionne bien est un programme dont les concepts sont clairs |
| | 49 | et dont le code est aisément lisible. Il vous sera donc demandé de respecter |
| | 50 | le modèle de présentation suivant pour l'écriture de votre code. |
| | 51 | |
| | 52 | [[Image(Cpp-Style-1.png)]] |
| | 53 | |
| | 54 | Le point important étant ''l'indentation''. Pour éviter d'avoir du texte trop |
| | 55 | large, réduisez la taille des tabulations à 2 ou 4 espaces. |
| | 56 | |