Les fonctionnalités les plus utilisées de make peuvent être décomposées en quelques concepts, cibles, dépendances et variables simples.
Les cibles sont les éléments que vous voulez construire, mais les commandes sous une cible peuvent être des commandes ou des scripts de compilation. Généralement, chaque cible fait référence à un module dans votre code, mais vous pouvez les rendre aussi précis que vous le souhaitez.
Les dépendances sont des fichiers ou d'autres cibles de votre projet. Le meilleur exemple de ceci est pour un projet C où vous construisez un binaire à partir d'un tas de fichiers objets. Chaque fichier objet devra exister avant que vous puissiez construire le binaire, donc faire traversera vos cibles jusqu'à ce que toutes les dépendances aient été complétées, puis exécuter la commande pour la cible globale.
Les variables ne sont pas toujours nécessaires, mais sont très utiles pour gérer des choses comme les drapeaux de compilation. Les exemples canoniques sont CC et CCFLAG qui se référeront au compilateur en utilisant gcc et les indicateurs comme -ansi -Wall -o2.
Quelques trucs et astuces plus généraux:
- Commandes doit être procédé par un caractère [tab], ou ils ne seront pas exécutées, c'est juste une vieille relique de faire, je ne Je ne me souviens pas pourquoi cela est.
- Par convention, vous souhaiterez peut-être inclure une cible globale pour spécifier la cible par défaut qui doit être la valeur par défaut. Ceci est utile lorsque vous avez un makefile complexe et qu'il y a une cible particulière que vous voulez toujours être la valeur par défaut.
- Votre makefile doit être appelé makefile ou Makefile, mais si vous voulez l'appeler quelque chose d'autre, utilisez make -f [makefilename]
- $ Toujours utiliser la syntaxe complète de l'extension de variable ie $ (variable) ou faire ne peut émettre les commandes que vous voulez.
- make peut fonctionner récursivement, donc si vous avez un tas de sous-modules dans votre projet qui vivent à l'intérieur des répertoires, vous pouvez appeler make sur le sous-répertoire makefile depuis make pour construire chacun. Si vous avez un projet très compliqué qui nécessite des scripts d'installation, etc., vous aurez probablement aussi besoin d'explorer autotools qui génère le makefile pour vous et fait un tas de trucs pour vérifier l'existence de la bibliothèque et d'autres problèmes de portabilité.
J'avais entendu dire qu'un arbre généalogique pour makefiles serait plutôt incestueux. : D –
Je n'ai jamais troupeau de quelqu'un "roulant" leur propre Perl/Python/ect. système pour des scénarios de construction complexes ou «plus que simples». En fait construire des outils comme SCon de Python tombe sur son visage avec une base de code complexe très grande. Mais je suis d'accord que vous pouvez probablement vous débrouiller en «empruntant» les scripts d'autres personnes. – Tom
@Tom - pas tellement pour la partie make de ce qui a changé/doit être reconstruit, mais plus pour les outils supplémentaires pour configurer les DB, générer des numéros de série et graver des CD –