2 votes

Compiler un seul fichier c++ avec un fichier make en utilisant le drapeau -g ne fonctionne pas

J'ai essayé d'utiliser un Makefile pour compiler un unique fichier cpp et ensuite nettoyer facilement l'exécutable généré. Cependant, le code Makefile ci-dessous ne compile pas le code avec -g. Par conséquent, je ne peux pas utiliser gdb sur l'exécutable. Je parviens à compiler le code avec le drapeau -g avec succès si je le compile en utilisant "g++ -g pairs_with_k_diff.cpp" dans la ligne de commande. Quelqu'un pourrait-il gentiment me pointer quelle est mon erreur dans le code Makefile ci-dessous?

pawkdiff: pairs_with_k_diff.o
    g++ pairs_with_k_diff.o -o pawkdiff

pawkdiff.o: pairs_with_k_diff.cpp
    g++ -c -g pairs_with_k_diff.cpp

clean:
    rm *.o pawkdiff

Lorsque j'appelle make, j'obtiens la sortie suivante (Comme vous pouvez le voir, le drapeau -g est absent).

g++    -c -o pairs_with_k_diff.o pairs_with_k_diff.cpp
g++ pairs_with_k_diff.o -o pawkdiff

4voto

Mat Points 104488

Vous n'avez pas de règle pour créer pairs_with_k_diff.o, donc la règle par défaut est utilisée.

Corrigez votre deuxième règle pour la faire fonctionner :

pairs_with_k_diff.o: pairs_with_k_diff.cpp
    g++ -c -g pairs_with_k_diff.cpp

Ou en alternative :

pawkdiff: pawkdiff.o
    g++ pairs_with_k_diff.o -o pawkdiff

pawkdiff.o: pairs_with_k_diff.cpp
    g++ -c -g pairs_with_k_diff.cpp -o pawkdiff.o

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X