0

不幸的是,我不记得第一次发生这种情况是什么时候,但最近我在运行“make”来构建程序时发现了一个奇怪的错误。

我有以下生成文件:

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 时,我得到:

$ 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 没有丰富的经验,但我读过的示例或教程似乎都没有消失选项的任何问题,似乎没有任何关于它的帖子。我只是做了一些愚蠢的事情而没有意识到吗?

4

1 回答 1

0

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

%.o: %.cpp
    g++ -g -c $<
于 2013-04-12T17:04:23.947 回答