Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 具有相对路径的Makefile?_Linux_Makefile - Fatal编程技术网

Linux 具有相对路径的Makefile?

Linux 具有相对路径的Makefile?,linux,makefile,Linux,Makefile,我在GentooLinux上的makefile有问题 以下是我的文件夹层次结构: Development -> GLTools -> include -> src ->Triangle ->triangle.cpp ->Makefile 和我的Makefile: MAIN = triangle SRCPATH = ./ SHAREDPATH = ../GLTools/src/ SHAREDINCPATH =

我在GentooLinux上的makefile有问题

以下是我的文件夹层次结构:

Development
 -> GLTools  
   -> include    
   -> src

->Triangle    
  ->triangle.cpp    
  ->Makefile
和我的Makefile:

MAIN = triangle
SRCPATH = ./
SHAREDPATH = ../GLTools/src/
SHAREDINCPATH = ../GLTools/include/
LIBDIRS = -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 = -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 $(SRCPATH)$(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
我的问题是获取以下错误:

demonking@Master ~/Development/Triangle $ make
g++    -c -o triangle.o triangle.cpp
triangle.cpp:4:50: error: GLTools.h: No such file or directory
triangle.cpp:5:56: error: GLShaderManager.h: No such file or directory
但是,当我将Makefile复制到文件夹开发(一个上一级的文件夹)并编辑路径时,它编译时没有任何错误

当我的triangle.cpp和Makefile在一个文件夹中,并且我尝试访问父文件夹中的GLTools时,为什么会出现错误?

使用的是
cxflags
而不是
CFLAGS
,并且您没有设置它,因此它不包括
INCDIRS

然后再试一次

通过阅读make的输出,您可以自己发现这一点。请注意您展示的输出中的第一行:

g++    -c -o triangle.o triangle.cpp
不包括旗帜。否
-g
。没有任何东西是您费尽心机设置的。

请尝试为g设置标志++

CXXFLAGS = $(CFLAGS)

为了精确起见-此赋值将'CFLAGS'字符串设置为CXXFLAGS变量,CXXFLAGS=$(CFLAGS)可能就是您想要的。确实如此。更正。谢谢,米奇,为什么会这样?OP实际上特别地将CFLAG放在命令中,该命令应该展开正确(就像任何变量一样)
CXXFLAGS = $(CFLAGS)