makefile

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
makefile [2021/02/08 19:46] – [Règles implicites] precise minimal makefile phswmakefile [2024/02/24 18:50] (Version actuelle) – [Makefile] add link phsw
Ligne 2: Ligne 2:
  
   * [[https://gl.developpez.com/tutoriel/outil/makefile/]]   * [[https://gl.developpez.com/tutoriel/outil/makefile/]]
 +  * [[https://renenyffenegger.ch/notes/development/make/index]]
 +  * [[https://connect.ed-diamond.com/GNU-Linux-Magazine/glmf-247/c-est-l-histoire-d-un-make...|C’est l’histoire d’un make…]]
 +
 +Les commandes sont à indenter avec des tabulations.
  
  
Ligne 14: Ligne 18:
 make VERBOSE=1 make VERBOSE=1
 </code> </code>
 +
 +Mode verbeux natif de make: jouer avec l'option ''%%--%%debug|-d''.
 +
  
  
Ligne 24: Ligne 31:
 CC=gcc CC=gcc
 CFLAGS=-W -Wall -ansi -pedantic # pour exécuter du shell, utiliser l'anti-apostrophe CFLAGS=-W -Wall -ansi -pedantic # pour exécuter du shell, utiliser l'anti-apostrophe
-LDFLAGS=+LDFLAGS=  # Extra flags to give to compilers when they are supposed to invoke the linker, ‘ld’, such as -L. 
 +LDLIBS= # les -lfoo
 EXEC=hello EXEC=hello
  
Ligne 32: Ligne 40:
     rm -f $(EXEC)     rm -f $(EXEC)
 </code> </code>
 +
 +Voir la doc: [[https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html]]
  
  
Ligne 41: Ligne 51:
   * ''$^'': toutes les dépendances   * ''$^'': toutes les dépendances
   * ''$?'': liste des dépendances plus récentes que la cible   * ''$?'': liste des dépendances plus récentes que la cible
 +
 +
 +
 +==== Règles conditionnelles ====
 +
 +[[https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_7.html|Source]]
 +
 +<code make>
 +target:
 +ifeq ($(ENV_VAR), 1)
 + # Something
 +else
 + # Another thing
 +endif
 +</code>
 +
 +
 +==== Éliminer l'extension d'une cible ====
 +
 +Il suffit d'utiliser la commande ''basename'' provenant de coreutils ([[https://stackoverflow.com/questions/13995906/get-filename-without-extension-within-makefile|source]]) :
 +<code make>
 +RR-babla.pdf: rr.tex
 + rubber --pdf --jobname $(basename $@) $<  # rubber adds itself the .pdf extension to the output file
 +</code>
 +
 +
 +==== Appeler une commande dans une règle ====
 +
 +<code make>
 +foo:
 +    echo $(shell date)
 +</code>
  • makefile.1612809964.txt.gz
  • Dernière modification : 2021/04/04 17:01
  • (modification externe)