| 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 | |