我正在通过OpenGL教程(OpenGL SuperBible 5)工作,我试图让我提供的Makefile为我自己的程序工作。我试图让make
访问我的/home/ben/lib/GLTools/include/
目录中的头文件GLTools.h
,并将其包含在我的Makefile中,其中-I/home/ben/lib/GLTools/include/
(实际上我使用的是-I$(SHAREDINCPATH)
),但make
抱怨说没有这样的文件。这是我Makefile
(我已经明确提到,我已经编辑原Makefile
):不在包含路径搜索
MAIN = Triangle
SRCPATH = ./ # Edited: src is in CWD
SHAREDPATH = /home/ben/lib/GLTools/src/ # Edited to copied GLTools/src dir
SHAREDINCPATH = /home/ben/lib/GLTools/include/ # Edited to copied dir
LIBDIRS = -L/usr/X11R6/lib -L/usr/X11R6/lib64 -L/usr/local/lib
INCDIRS = -I/usr/include -I/usr/local/include -I/usr/include/GL -I$(SHAREDINCPATH) -I$(SHAREDINCPATH)GL
CC = g++
CFLAGS = $(COMPILERFLAGS) -g $(INCDIRS)
LIBS = -lX11 -lglut -lGL -lGLU -lm
prog : $(MAIN)
$(MAIN).o : $(SRCPATH)$(MAIN).cpp
glew.o : $(SHAREDPATH)glew.c
GLTools.o : $(SHAREDPATH)GLTools.cpp
GLBatch.o : $(SHAREDPATH)GLBatch.cpp
GLTriangleBatch.o : $(SHAREDPATH)GLTriangleBatch.cpp
GLShaderManager.o : $(SHAREDPATH)GLShaderManager.cpp
math3d.o : $(SHAREDPATH)math3d.cpp
$(MAIN) : $(MAIN).o glew.o
$(CC) $(CFLAGS) -o $(MAIN) $(LIBDIRS) $(SRCPATH)$(MAIN).cpp $(SHAREDPATH)glew.c $(SHAREDPATH)GLTools.cpp $(SHAREDPATH)GLBatch.cpp $(SHAREDPATH)GLTriangleBatch.cpp $(SHAREDPATH)GLShaderManager.cpp $(SHAREDPATH)math3d.cpp $(LIBS)
clean:
rm -f *.o
...这里是make
投诉:
[email protected]:~/Code/C++/OpenGL/SuperBible5/SB5/Listings$ make
g++ -c -o Triangle.o Triangle.cpp
Triangle.cpp:4:50: fatal error: GLTools.h: No such file or directory
compilation terminated.
make: *** [Triangle.o] Error 1
其合理性检查我打印出的GLTools.h
位置:
[email protected]:~/Code/C++/OpenGL/SuperBible5/SB5/Listings$ ls /home/ben/lib/GLTools/include/
GL GLFrame.h GLMatrixStack.h GLTriangleBatch.h
GLBatchBase.h GLFrustum.h GLShaderManager.h math3d.h
GLBatch.h GLGeometryTransform.h GLTools.h StopWatch.h
任何想法,为什么我不能编译?我正指着GLTools.h
与INCDIRS
,对吧?
此外,我无法在makefile中的任何位置找到COMPILERFLAGS
的声明 - 这是系统定义的吗?
太棒了!我想知道为什么这对原始Makefile有效 - 我复制并粘贴源代码,因此所有内容都应该完全相同。 –