Existe-t-il un mécanisme permettant de prendre en compte les règles implicites globales par défaut disponibles n'importe où, de manière similaire aux règles intégrées? Make fournit des règles intégrées pour compiler des fichiers C/C++/Fortran, sans même avoir besoin d'un Makefile
pour les cas simples. Toutefois, lors de la compilation d'autres langues (par exemple, les fichiers de langue de programmation Go), un Makefile
est toujours requis. Je voudrais étendre mon Makeenvironment pour avoir des règles implicites disponibles par défaut.Règle par défaut dans Make
Répondre
Ceci n'est normalement pas souhaitable, car cela rendrait votre fichier Makefile moins portable; cela ne fonctionnerait pas sur la machine de quelqu'un d'autre s'ils ne l'avaient pas configuré de cette façon. Cependant, si vous voulez faire cela, créez un Makefile "global" quelque part avec vos règles par défaut pour les fichiers Go, puis ajoutez son chemin à la variable d'environnement MAKEFILES. Ce Makefile global sera traité avant tout Makefile lorsque vous lancerez "make", comme si vous aviez inclus sa source en haut du fichier.
Je suppose que vous faites allusion au fait que vous pouvez faire
make hello.o
et faire saura automatiquement comment faire le .o
à partir d'un fichier .c
(ou même d'un .f
ou .p
, si il existe) - mais vous voulez faire pour les types de fichiers personnalisés (par exemple, la construction d'un .bar
d'un .foo
La façon la plus portable de faire est la suivante (dans votre Makefile.):
.SUFFIXES: .foo .bar
.foo.bar:
foo2bar -in $> -out [email protected]
La première ligne (.SUFFIXES
) prévient que vous allez les traiter comme des suffixes spéciaux; la deuxième ligne dit « voici une recette pour faire un .bar
d'un .foo
La troisième ligne donne la commande pour ce faire - $>
et [email protected]
se changer par marque à l'entrée et les noms de fichiers de sortie
REMARQUE:.. Le tiret du la troisième ligne DOIT être un caractère de tabulation
Une méthode beaucoup plus flexible, qui ne fonctionne qu'avec GNU make, est d'utiliser sa prise en charge pour implicit rules Si vous pouvez garantir que vous utiliserez GNU make, cela sera probablement
Bien que je sois d'accord avec dmazzoni, je voudrais juste ajouter ma recette pour un Go Makefile
:
# Include default Golang Make magic
include $(GOROOT)/src/Make.$(GOARCH)
# Hack the following line
your_program: your_program.$O
$(LD) -o [email protected] $^
# Compiles .go-files into architecture-specific binaries
%.$O: %.go
$(GC) -o [email protected] $^
clean:
rm your_program *.$O
(Note: le $O
est DOLLAR + MAJUSCULES-o - zéro!)
Bien que je ne l'ai pas testé sur toutes les machines dont je dispose, je crois qu'il devrait le port assez bien.
Ah, encore plus simple: http://github.com/jlouis/go-blip/blob/master/Makefile (ne l'ai pas encore testé ...) –
- 1. Répertoire en tant que dépendance dans la règle make
- 2. Comment remplacer la cible par défaut `make dist` de Qmake?
- 3. Personnaliser le message par défaut pour une règle
- 4. make: fichier hiérarchique make
- 5. args par défaut dans
- 6. Make Test.QuickCheck.Batch utilise un type par défaut pour tester les fonctions de la liste
- 7. Une règle cible vide est-elle un substitut viable pour .DEFAULT_GOAL dans GNU Make?
- 8. Dépendance conditionnelle avec make/gmake
- 9. Conventions par défaut de NHibernate par défaut
- 10. Bison construire avertissement: « option -s donnée, mais la règle par défaut peut être adaptée »
- 11. Contrôleur par défaut dans CodeIgniter
- 12. set_value() par défaut dans CodeIgniter
- 13. Document par défaut dans IIS
- 14. Heure par défaut dans VB.NET
- 15. Helicon ISAPI Rewrite + ASP.NET: règle de réécriture pour rediriger vers la page par défaut?
- 16. Répertoire pour les fichiers générés par Make pendant l'installation à partir de configure, make et make install
- 17. IIS make URL Réécriture gourmande
- 18. Création d'une règle d'authentification par formulaire
- 19. GNU make avec de nombreux répertoires cibles
- 20. Réécrire Règle dans Nginx
- 21. L'utilisateur par défaut a un identifiant différent par défaut
- 22. comment configurer les dépendances entre répertoires dans gnu make
- 23. Vue par défaut de l'élément de liste par défaut Sharepoint
- 24. Puis-je "déconnecter" une règle par programmation dans Treetop?
- 25. Comment remplacer 'dash' par 'underscore' dans une règle IIRF?
- 26. Utilisation de make dans Eclipse
- 27. Faire un double-défaut par défaut dans g77, compilateur Fortran
- 28. Jeton inattendu par défaut dans Chrome avec ({}). Défaut
- 29. par défaut de mettre une application par défaut
- 30. Définition d'une entrée Apache RewriteRule par défaut
Merci! D'accord avec votre prudence. Cependant, je voudrais compiler du code jetable sans écrire Makefiles tout le temps. – notnoop