Obligement - L'Amiga au maximum

Vendredi 17 mai 2024 - 11:48  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

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

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des 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,
ALL


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


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


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]