Conditional Compiler Options/fr
│
English (en) │
français (fr) │
Généralités
Depuis Lazarus 0.9.29 vous pouvez définir le mode de construction et les options conditionnelles de compilation. Ces options dépendent du système d'exploitation, du processeur, du jeu de widget cibles actuels et du mode de construction du projet.
Pour les définitions conditionnelles, voir ici Macros et définitions conditionnelles.
Vous pouvez définir les macros de construction d'un paquet via package editor / Compiler Options / Build Macros.
Vous pouvez définir les macros de construction d'un projet via Project / Project Options / Compiler Options / Build Macros.
Unités à cible spécifique - Réalisable avec des directives FPC, pas d'extra Lazarus demandé
Situation concrète : le paquet d'extensions LCL a une unité (OleUtils) qui implémente TOLEStream. Il n'a de sens que dans Windows. Actuellement l'unité est ajoutée dans tous les jeux de widgets mais tout le code est enveloppé dans une définition $IFDEF WINDOWS ainsi il est vu comme une unité factice dans les autres jeux de widgets.
Notes:
- Toutes les unités devraient être ajoutées au paquet qu'elles soient utilisées ou non. Si une unité ne doit pas toujours être compilée (pas ajoutée dans la section uses du paquet), décochez l'option 'uses unit' et ajoutez par exemple {$IFDEF win32}uses oleutils{$ENDIF} dans une unité du paquet.
- Vous pouvez mettre des unités ou des fichiers d'inclusion spécifiques à des cibles dans des sous-dossier comme montré dans les sources de Lazarus et FPC (units/$(TargetOS)).
- Depuis la version 0.9.31, les fichiers multiples portant le même nom peuvent ajoutés dans des paquets.
Ce qui ne sera pas implémenté
- Un mode de construction Debug/Verbeux global. Presque personne ne veut augmenter la verbosité de tous les paquets, ni déboguer tous les paquets. Mais vous pouvez en définir un pour vos propres paquets.
- Unités conditionnelles. Cela est déjà faisable via les directives FPC et les macros de l'EDI.
Développements futurs / Souhait
- Utiliser un paquet uniquement sous une cible, p.ex. seulement sous Windows et OS X mais pas sous Linux ou BSD.
Directives, Définitions et conditionnelles: |
---|
Conditionnelle de compilation | Options conditionnelles du compilateur | Directives globales du compilateur | Directives locales du compilateur | $IF | Macros et conditionnelles | Définitions pour les plateformes |