使用-g标志使用makefile编译单个c ++文件不起作用

时间:2019-08-02 05:05:18

标签: c++ makefile g++

我一直试图使用Makefile来编译单个cpp文件,然后轻松清理生成的可执行文件。但是,下面显示的Makefile代码不会使用-g编译代码。结果,我无法在可执行文件上使用gdb。如果我在命令行中使用“ g ++ -g Pairs_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

1 个答案:

答案 0 :(得分:4)

您没有创建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