Articles of gnu make

: = vs = dans make macros

Duplication possible: Affectation de la variable Makefile Je ne connais que la syntaxe makefile très basique, et lisais le makefile un autre projet et makefile tombé sur := pour la déclaration de macro. Pourquoi utiliseraient-ils cela? En d’autres termes, y a-t-il une différence entre MYMACRO = hi i’m a macro et MYMACRO := hi i’m […]

Cibles génériques dans un Makefile

Comment puis-je compacter les cibles Makefile suivantes? $(GRAPHDIR)/Complex.png: $(GRAPHDIR)/Complex.dot dot $(GRAPHDIR)/Complex.dot -Tpng -o $(GRAPHDIR)/Complex.png $(GRAPHDIR)/Simple.png: $(GRAPHDIR)/Simple.dot dot $(GRAPHDIR)/Simple.dot -Tpng -o $(GRAPHDIR)/Simple.png $(GRAPHDIR)/IFileReader.png: $(GRAPHDIR)/IFileReader.dot dot $(GRAPHDIR)/IFileReader.dot -Tpng -o $(GRAPHDIR)/IFileReader.png $(GRAPHDIR)/McCabe-linear.png: $(GRAPHDIR)/McCabe-linear.dot dot $(GRAPHDIR)/McCabe-linear.dot -Tpng -o $(GRAPHDIR)/McCabe-linear.png graphs: $(GRAPHDIR)/Complex.png $(GRAPHDIR)/Simple.png $(GRAPHDIR)/IFileReader.png $(GRAPHDIR)/McCabe-linear.png – Utiliser GNU Make 3.81 .

Désactiver les règles et variables internes à l’intérieur du fichier de création

Je veux désactiver les règles et les variables intégrées en passant les options -r et -R à GNU make, à partir du fichier make. D’autres solutions qui me permettent de le faire de manière implicite et transparente sont également les bienvenues. J’ai trouvé plusieurs références à l’utilisation de MAKEFLAGS et j’ai rencontré des problèmes similaires.

Fonctions dans le fichier Makefile

J’écris un Makefile avec beaucoup de choses répétitives, par exemple debug_ifort_Linux: if [ $(UNAME) = Linux ]; then \ $(MAKE) FC=ifort FFLAGS=$(difort) PETSC_FFLAGS=”…” \ TARGET=$@ LEXT=”ifort_$(UNAME)” -e syst; \ else \ echo $(err_arch); \ exit 1; \ fi où la cible ‘syst’ est définie, la variable ‘UNAME’ est définie (et est généralement Linux, mais pourrait […]

Comment placer des fichiers d’object dans un sous-répertoire séparé

J’ai du mal à essayer d’utiliser make pour placer des fichiers d’objects dans un sous-répertoire séparé, probablement une technique très simple. J’ai essayé d’utiliser les informations de cette page: http://www.gnu.org/software/hello/manual/make/Prerequirejsite-Types.html#Prerequirejsite-Types ku.h’, needed by la sortie suivante de make: make: *** Aucune règle pour rendre la cible ku.h’, needed by obj / kumain.o’. Arrêtez. Cependant, ku.h […]

Comment forcer une erreur dans un fichier gnumake

Je veux détecter une condition dans mon fichier Make où un outil est la mauvaise version et forcer le make à échouer avec un message d’erreur indiquant que l’élément n’est pas la bonne version. Quelqu’un peut-il donner un exemple de faire cela? J’ai essayé ce qui suit mais ce n’est pas la bonne syntaxe: ifeq […]

Option GNJ make -j

Depuis que j’ai appris à propos de -j j’ai utilisé jj-jithly. L’autre jour, je compilais une installation d’atlas et le make a échoué. Finalement, je l’ai retrouvé jusqu’à ce que les choses soient faites dans le désordre – et ça a bien fonctionné une fois que je suis retourné à la fabrication de cordes à […]

Ajouter à GNU make variables via la ligne de commande

J’utilise un Makefile GNU-make pour construire un projet C avec plusieurs cibles ( all , clean et quelques cibles spécifiques au projet). Dans le processus de débogage, je voudrais append des drapeaux à une seule construction sans modifier de manière permanente le Makefile (par exemple, append des symboles de débogage ou définir un indicateur de […]

Supprimer un élément d’une variable Makefile?

J’ai un fichier makefile, qui inclut plusieurs autres fichiers makefiles, qui à leur tour s’ajoutent à une variable comme celle-ci: VAR := Something SomethingElse VAR += SomeOtherThing (…) Maintenant, je souhaite supprimer SomethingElse de la variable VAR . Qu’est-ce que je mets à la place de (…) pour faire ça? J’utilise GNU Make et une […]

Quelle est la différence entre: = et = dans Makefile?

Pour l’affectation de variables dans Make (ou Microsoft nmake), je vois: = et = operator. Quelle est la différence entre eux?