Développement4 juin 2026· via DEV Community

CrabPascal adopte la compilation conditionnelle comme Delphi

CrabPascal adopte la compilation conditionnelle comme Delphi

Image : DEV Community

Les projets Delphi ne se résument pas à un seul fichier source : ils reposent souvent sur des directives de compilation conditionnelle pour adapter le code aux différentes plateformes. CrabPascal, un outil de vérification et d’exécution pour le Pascal, intègre désormais un préprocesseur inspiré de Delphi pour gérer ces cas d’usage.

Un préprocesseur intégré, mais pas un compilateur

Depuis la version 1.5.2 (et amélioré dans les versions 2.x), CrabPascal propose un préprocesseur en ligne qui évalue les directives comme {$IFDEF}, {$DEFINE} ou {$INCLUDE} avant même l’analyse du code principal. L’objectif ? Reproduire le comportement de compilation de Delphi, où des blocs de code peuvent être activés ou désactivés selon les symboles définis. Par exemple, un projet Windows peut inclure uses Winapi.Windows; via {$IFDEF MSWINDOWS}, tandis qu’une version Linux utilisera uses Posix.Unistd;.

CrabPascal ne se substitue pas à un compilateur comme Free Pascal ou Delphi. Il se concentre sur la gestion des directives de préprocesseur, avec un support partiel pour des fonctionnalités avancées comme les conditions numériques ({$IF}) ou les régions éditoriales ({$REGION}). Les directives exotiques ou spécifiques à un compilateur (comme {$MESSAGE}) peuvent être ignorées ou signalées comme warnings.

Une intégration pratique pour les développeurs

Le préprocesseur s’active lors du chargement des unités (fichiers .pas) et peut être contrôlé via une configuration TOML dans le projet. Les symboles peuvent être définis directement dans le code ou via la configuration, ce qui facilite la standardisation des flags entre différents environnements (CI, machines de développement, etc.).

Pour les équipes qui migrent des unités Delphi vers d’autres plateformes, CrabPascal propose une commande crab-pascal preproc pour inspecter la sortie du préprocesseur avant compilation. Une fonction utile pour repérer les incohérences de symboles ou les inclusions conditionnelles inattendues.

En résumé, cette fonctionnalité renforce la compatibilité avec l’écosystème Delphi tout en restant légère et ciblée, sans prétendre remplacer un compilateur complet.


Source : DEV Community. Synthèse éditoriale assistée par IA — TechnoExpress.

Lire la source originale sur DEV Community →

← Retour à l'accueil