Obligement - L'Amiga au maximum

Mercredi 23 janvier 2019 - 14:20  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles en d'autres langues


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Logiciels
 · Jeux
 · Scène démo
 · Divers


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


En pratique : Utilisation de base de Lmk 5.10
(Article écrit par Frédéric Mazué et extrait d'Amiga News Tech - mai 1991)


Dans le remarquable environnement de développement du SAS se trouve un utilitaire que peu utilisent (j'ai fait un sondage auprès d'au moins deux personnes !) par manque de connaissances de ses possibilités. Pourtant voilà un programme bien agréable pour faciliter la vie des fainéants.

Je veux bien entendu parler de Lmk. "Mais à quoi peut-il bien servir", se demandent tous les lecteurs en coeur. Eh bien cela sert à compiler et relier d'un coup un ou plusieurs programmes C, sans s'occuper de rien. Autrement dit, finies les fastidieuses saisies de commandes de compilations et d'édition de liens depuis le CLI, on peut enfin aller tranquillement boire un café pendant que l'Amiga travaille.

Lmk, dans l'environnement SAS 5.10, peut être appelé par son nom depuis le CLI ou depuis le Workbench. En ce qui concerne le lancement depuis le Workbench, vous verrez qu'il n'existe pas d'icône nommée "Lmk". En fait, il faut cliquer sur l'icône "Build", ce qui a finalement pour effet de d'invoquer Lmk.

C'est un malin

Quelque soit la façon dont Lmk est lancé, tous les sources présents dans le répertoire courant sont compilés et reliés ensemble suivant les options par défaut définies dans le fichier SASCOPTIONS, qui doit siéger dans le tiroir "Preferences" de votre Workbench.

Si vous faites quelques essais, vous constaterez que Lmk est un gros malin car il ne compile que les sources qui ne l'ont pas déjà été, où qui viennent seulement d'être modifiés. Si vous voulez forcer la recompilation de tous les sources, il faut dans ce cas appeler Lmk depuis le CLI avec l'option adaptée, c'est-à-dire :

Lmk

Mais ceci, déjà agréable en soit, est fort peu de choses par rapport à ce qu'il est possible de faire dès que l'on crée un "makefile".

Le makefile

C'est un fichier texte qui contient toutes les commandes que Lmk se chargera de faire ingurgiter au compilateur et à l'éditeur de liens. Bien sûr, il y a une syntaxe à respecter, mais d'abord le nom du fichier lui-même a son importance. Trois possibilités :
  • lmkfile
  • prout.lmk (fichier quelconque avec l'extension .lmk)
  • makefile
Lorsque Lmk est lancé, les fichiers sont recherchés dans le répertoire courant, suivant selon l'ordre ci-dessus. Ce n'est que si aucun fichier n'est trouvé que les options du SASCOPTIONS sont en dernier recours utilisées.

Un exemple de makefile

Commençons par quelque chose de très simple afin de nous familiariser.

Lmk

Quelques petites explications s'imposent :
  • La première ligne est un commentaire. On peut en mettre autant que l'on veut à condition qu'ils commencent en début de ligne et par le signe dièse (#).
  • La deuxième ligne "prog: prog.o" signifie à Lmk que l'exécutable "prog" dérivera de l'objet "prog.o".
  • Ensuite vient la commande pour relier proprement dite. Attention, dans la notice du SAS est précisé que cette ligne doit commencer par un espace. C'est faux, il en faut deux au moins. Nobody's perfect ! Passons...
  • Ensuite, la ligne "prog.o: prog.c" signifie que l'objet "prog.o" dérivera du source "prog.c".
  • Et enfin, la commande de compilation qui devra, vous l'aviez déjà compris, elle aussi débuter par deux espaces au moins.
Allons plus loin

En effet, dans l'exemple précédent n'est utilisé qu'un seul source. Un esprit chagrin comme le vôtre, ô lecteur adulé, peut encore dire que finalement ça ne valait pas le coup de perdre son temps à créer un makefile pour si peu. C'est vrai, mais Si vous êtes un programmeur averti, vous êtes organisé et vous aimez ranger les sources appartenant à un même projet dans un répertoire spécifique et fractionner votre source en plusieurs morceaux pour des questions de clarté et de commodité. De plus, vous n'avez rien à faire des fichiers objets produit par le compilateur et vous reprendriez bien un deuxième café... Voyez plutôt :

Lmk

Vous voulez compiler d'un coup les programmes "essais" et "essai1.c" dont les sources sont rangés dans les répertoires respectifs "sources" et "sources1". L'exemple ci-dessus fait tout cela, et vous vous retrouvez en fin de compte avec les programmes exécutables "essai" et "essai1" dans le répertoire courant.

Lmk

Ceci s'interprete comme ceci : Lmk voit où le source se situe et passe une directive include au compilateur, afin que celui-ci puisse trouver le fichier et ainsi de suite.

En plus, et c'est extrêmement sympathique, vous avez vu qu'il est parfaitement possible d'introduire des commandes AmigaDOS dans un makefile. C'est ce qui a été fait pour effacer les objets produits. Il n'y a déjà plus beaucoup de limites à ce qu'il est possible de trafiquer grâce à cette possibilité. Mais tout de suite, nous allons éliminer un problème auquel vous risquez de vous heurter. Vous voulez relier un programme comme suit :

Lmk

Cette commande, que l'on pourrait taper d'un seul jet dans le CLI, est trop longue pour tenir sur une seule ligne. Or, il n'est pas possible, dans un makefile, d'aller simplement à la ligne car pour Lmk, chaque début de ligne correspond implicitement à une commande. Pour résoudre ce problème, nous utiliserons le caractère barre oblique inversée (\), la commande devenant :

Lmk

Ce qui est tout de même plus clair.

Imaginons maintenant qu'un programme "prog.c" ait besoin d'un fichier de données nommé "data.h", par exemple. Vous pouvez bien sûr écrire dans le source "prog.c" la directive "#include <data.h", mais il est plus pratique de faire ainsi dans le makefile :

Lmk

...et l'inclusion du fichier data.h se fera automatiquement.

Toujours plus

Bon d'accord, il y a d'éternels mécontents parmi vous qui trouvent qu'il est bien fastidieux d'écrire à chaque fois la commande de compilation dans le makefile. c'est pour vous que les macros existent. Voici un exemple de ce qu'il est possible de faire avec les macros :

Lmk

Vous l'avez compris, les macros peuvent être utilisées pour tout ce que l'on veut :
  • Options de compilation.
  • Spécification de répertoire.
  • Regroupement d'objet.
  • Tout ce qui peut vous passer par la tête !
Je pense que bon nombre d'entre vous ont déjà découvert beaucoup de choses à propos de Lmk, mais je ne vous quitterai pas sans vous montrer comment il est possible de définir un règle de transformation sources-objets. L'exemple ci-dessus devient :

Lmk

Vous l'aurez compris, la ligne...

Lmk

...définit une règle de compilation par défaut de tous les sources, ce qui permet de raccourcir sensiblement le makefile et n'empêche de toute façon pas de forcer une compilation particulière avec une ligne de commande spécifique.

Voilà. Le but de cet article était de vous montrer quelques-unes des possibilités de l'hyper-puissant Lmk, mais nous sommes très loin de ses limites, comme vous pourrez vous en rendre compte maintenant que vous vous y êtes familiarisé, en épluchant la notice. Décidément le SAS est bien le meilleur compilateur C sur Amiga !


[Retour en haut] / [Retour aux articles]