1.1 Structuration :
cibles:prérequis
commande
Compilation gcc 1.2 : -g, -o, -c, -D, -w, -W, -Wall, -O3
-c : les fichiers source sont compilés et assemblés, mais pas liés
Exemple:
gcc -c test.cpp -o test
-c suivi de plusieurs fichiers source
Lorsque -c est suivi de plusieurs fichiers source, un fichier .o sera généré pour chaque fichier source , mais -o ne peut pas être utilisé pour le moment .
Lien de référence : Introduction aux options de compilation de gcc -o et -c_gcc -o_chengqiuming's Blog-CSDN Blog
1.3 Variables d'automatisation
variable d'automatisation |
illustrer |
$@ |
Indique le fichier objet |
$ % |
Lorsque le fichier cible est un fichier de bibliothèque statique, il représente un nom de membre de la bibliothèque statique. |
$< |
Indique le premier fichier dépendant. |
$^ |
Représente tous les fichiers dépendants. |
$ ? |
Une liste de tous les fichiers dépendants plus récents que le fichier cible. |
$+ |
Comme "$^", mais il préserve les occurrences en double des fichiers dépendants. Il est principalement utilisé dans l'occasion de référence croisée de la bibliothèque lorsque le programme est lié. |
$* |
Dans les règles de modèle et les règles de modèle statiques, signifie "tige". La "tige" est la partie représentée par le "%" dans le motif cible (lorsqu'un répertoire est présent dans le nom du fichier, |
test:test.o test1.o test2.o
gcc -o $@ $^
test.o:test.c test.h
gcc -o $@ $<
test1.o:test1.c test1.h
gcc -o $@ $<
test2.o:test2.c test2.h
gcc -o $@ $<
L'ajout de caractères "D" ou "F" à ces variables dans GNU crée une série de variantes de variables d'automatisation pouvant opérer sur les noms de fichiers.
D représente la partie répertoire et F représente la partie fichier. Tels que : $(@D), $(@F)
1.4 Recherche de fichier objet
4.1 VPATH
VPATH := voiture src
test : test.o
gcc -o $@ $^
Les fichiers du répertoire src sont recherchés en premier, puis les fichiers du répertoire car sont recherchés.
4.2 vpath
vpath test.c voiture src
Rechercher les fichiers test.c dans deux chemins
1.5 Faux objectifs
faire le ménage:
test rm -rf *.o