Voici mon makefile:Comment utiliser les règles implicites de GNU make pour faire `foo` de` foo.s`?
AS=nasm
ASFLAGS=-f elf64
%: %.o
${LD} -o [email protected] $<
Supposons que j'ai un fichier source foo.s
, je peux courir make foo.o
puis make foo
pour rendre le fichier exécutable foo
.
$ make foo.o
nasm -f elf64 -o foo.o foo.s
$ make foo
ld -o foo foo.o
Mais si je lance directement make foo
, cc
est utilisé à la place.
$ rm foo foo.o
$ make foo
cc -f elf64 foo.s -o foo
cc: error: elf64: No such file or directory
cc: error: unrecognized command line option ‘-f’
make: *** [<builtin>: foo] Error 1
Ceci est expliqué dans the documentation, à la fin de la section « Liaison d'un seul fichier objet ».
Comment dois-je écrire mon makefile pour que je puisse courir make foo
pour faire foo.o
de foo.s
puis foo
de foo.o
automatiquement?
Cela fonctionne. Voulez-vous expliquer pourquoi? – TheoYou
J'ai ajouté des liens vers le manuel GNU make –