Pour les systèmes de build, il y a 2 choses à prendre en compte: l’utilisation de l’outil lui-même et le langage utilisé pour décrire comment compiler le projet.
Pour le langage, inutile de l’apprendre si on ne compte pas écrire soi-même quelque chose. Mais je rejoins les 2 autres sur un point: on ne peut pas y couper lorsqu’on veut distribuer le projet ou lorsqu’il devient trop gros ou qu’il y a trop d’étape.
Par contre, il faut un minimum savoir comment fonctionne le système de build qu’on utilise histoire de compiler des exécutables ou des bibliothèques de manière efficace et qui s’intègre à l’environnement.
À mon sens, le minimum est de savoir changer le compilateur, le mode de compilation (debug, release, etc) et lister les options d’un projet. Lire le manuel concernant l’outil en ligne de commande ou ce que donne --help
est déjà une bonne étape. Le fonctionnement de certains systèmes de build comme CMake resteront quand même assez obscures. Par exemple, CMake ne compile pas avec les options d’optimisations par défaut, il faut le demander avec -DCMAKE_BUILD_TYPE=Release
.
Ce point est important lorsqu’on écrit les instructions de compilation dans un README, mais aussi lorsqu’il faut corriger les instructions erronées d’autres projet: cmake undossier && make
ne fonctionne pas partout (c’est mon cas) et n’est pas la manière recommander de faire. Il faut utiliser cmake --build dossier_de_build
à la place de make
.
Par contre, écrire directement un Makefile: Non ! Ceux qui le font ne gèrent absolument pas convenablement les environnements utilisés (plateforme, compilateur, linker, option spéciales ou mode de compilation) ni les dépendances (écrire à la main les dépendances sur des .h/.hpp n’est pas une gestion des dépendances ; ne pas les écrire non plus). À la fin, le résultat est soit bancal, soit le Makefile est imbitable.
Les systèmes de build tel que xmake, meson, cmake, etc gèrent plein de chose de manière automatique et permettent de s’affranchir de plein de problème.
Le plus connut est probablement cmake, mais le langage est vraiment horrible et le projet à un historique très lourd avec des recommandations qui ont changées au fils des ans. Il faut faire gaffe à ne pas suivre d’anciennes méthodes qui peuvent se révéler problématique par la suite. À mon sens, meson et xmake sont de bien meilleurs candidats. Je te conseille quand même de regarder cmake pour te faire ton propre avis.
Note au passage que gcc ./src/*.c -o exe
est très insuffisant: il manque les warnings. Certains systèmes de build (tous sauf cmake…) ont des options pour activer au moins -Wall
et -Wextra
avec gcc et clang.