1.) Qu'est-ce que l'option -g de gcc?
Generate informations de débogage
2.) Quels sont $ * et $ @
$*
est la tige de la règle.Lorsque vous faites règle comme
%.ext: %.otherext
ext2otherext --input $? --output [email protected] --logfile $*.log
, et la règle tente de faire file.ext
de file.otherext
, puis de se connecter va à file.log
[email protected]
est le nom du fichier cible (file.ext
dans le cas ci-dessus).
3.) Comment sait-il exécuter la dernière cible?
Ceci est un mystère.
$*
est utilisé pour les fichiers intermédiaires: comme, lorsque vous essayez de faire une %.so
sur %.c
, vous aurez besoin d'un %.o
intermédiaire qui est ni cible ni source. Vous mettez:
%.so: %.c
gcc -fPIC -g -c -o $*.o $?
ld -shared -o [email protected] $*.o
En d'autres termes, dans une règle %.extension
, $*
est tout sauf le .extension
.
En tant que cible, $*
n'a aucun sens. Etes-vous sûr que cette règle est effectivement exécutée quelque part?
Lorsque je tente de le reproduire en utilisant votre Makefile, il applique des règles par défaut (cc -o
) au lieu de gcc -g -o
Règle dont vous avez besoin semble être:
%: %.c
gcc -g -o [email protected] $?
Vous devriez. donner à cette question un meilleur nom. –
C'est tout le makefile? $ * comme cible est assez étrange – Quassnoi