我一直在尝试使用 Makefile 来编译单个 cpp 文件,然后轻松清理生成的可执行文件。但是,下面显示的 Makefile 代码不会使用 -g 编译代码。因此,我无法在可执行文件上使用 gdb。如果我在命令行中使用“g++ -gpairs_with_k_diff.cpp”编译代码,我能够成功编译带有 -g 标志的代码。有人愿意指出我在下面显示的 Makefile 代码中的错误吗?

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

当我调用 make 时,我得到以下输出(如您所见,-g 标志不存在)。
g++    -c -o pairs_with_k_diff.o pairs_with_k_diff.cpp
g++ pairs_with_k_diff.o -o pawkdiff

最佳答案

您没有制作 pairs_with_k_diff.o 的规则,因此使用默认规则。

修正你的第二条规则以使其工作:

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

或者作为替代:
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

关于c++ - 使用 -g 标志使用 makefile 编译单个 C++ 文件不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57320232/

10-13 07:09