不幸的是我不记得第一次发生的时间,但最近我注意到一个奇怪的错误,当我运行“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没有太大的经验但没有我读过的例子或教程似乎对消失的选项有任何问题,似乎没有关于它的任何帖子。我只是做了一些愚蠢而没有意识到的事情吗?
答案 0 :(得分:0)
构建目标文件的规则是错误的,它缺少%
:
%.o: %.cpp
g++ -g -c $<