使用“make”构建c ++程序时忽略-g选项

时间:2013-04-12 16:57:53

标签: c++ debugging gcc makefile gdb

不幸的是我不记得第一次发生的时间,但最近我注意到一个奇怪的错误,当我运行“make”来构建程序时。

我有以下makefile:

SOURCE = Foo.cpp \
         Foobar.cpp

OBJECTS = $(SOURCE:.cpp=.o)
LIBS = -lX11 -lGL -lGLU

program: $(OBJECTS)
    g++ $(OBJECTS) $(LIBS) -o platform

.o: .cpp
    g++ -g -c $@

令人讨厌的是,当我跑步时,我得到了:

$ make
g++    -c -o Foo.o Foo.cpp
g++    -c -o Foobar.o Foobar.cpp
g++ Foo.o Foobar.o -lX11 -lGL -lGLU -o program

忽略“-g”选项。有谁知道为什么会这样?有趣的是,我尝试在终端中手动输入命令:

$ g++ -g -c Foo.cpp
$ g++ -g -c Foobar.cpp
$ make
g++ Foo.o Foobar.o -lX11 -lGL -lGLU -o program

它按预期工作,我可以正确使用像gdb这样的程序,所以它似乎不是一个C ++ / gcc问题,我对makefile没有太大的经验但没有我读过的例子或教程似乎对消失的选项有任何问题,似乎没有关于它的任何帖子。我只是做了一些愚蠢而没有意识到的事情吗?

1 个答案:

答案 0 :(得分:0)

构建目标文件的规则是错误的,它缺少%

%.o: %.cpp
    g++ -g -c $<