残念ながら、これが最初にいつ発生したかは覚えていませんが、最近、「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 の問題ではないようです。私はメイクファイルの経験が豊富ではありませんが、読んだ例やチュートリアルはどれも持っていないようですオプションが消えるという問題はなく、それに関する投稿はないようです。私は愚かなことをしただけで、それに気づいていませんか?