2016-12-20 68 views
1

我意识到这是一个查询查询,但我花了数小时查看以前的答案,但仍然处于亏损状态。我没有大量的makefile经验,并且发现很难遵循这些示例。Makefile目录的使用

我有以下生成文件:

CC=g++ 

CFLAGS=-c -Wall 
LDFLAGS= -lSDL2 -lSDL2_image -lSDL2_ttf 
SOURCES=main.cpp hello.cpp factorial.cpp 
OBJS=$(SOURCES:%.cpp=%.o) 
EXECUTABLE=hello 
FULLOBJS = $(addprefix obj/,$(OBJS)) 


all: $(SOURCES) $(EXECUTABLE) 

$(EXECUTABLE): $(OBJS) 
    $(CC) $(LDFLAGS) $(OBJS) -o [email protected] 

.cpp.o: 
    $(CC) -MD -I. $(CFLAGS) $< -o [email protected] 

clean: 
    -rm -rf $(OBJS) $(EXECUTABLE) $(OBJS:%.o=%.d) 


-include $(OBJS:%.o=%.d) 

其工作方式,我想。但是,如果我能够将.h.cpp .o和.b文件整齐地组织到/ header// source /和/ object/relative子目录中,情况会更好。请你能向我解释怎么做?

非常感谢

+0

是否要为.h,.cpp,.o创建单独的文件夹并将路径添加到这些文件夹? – CroCo

+0

如果可能的话。我认为有一种比单独为每个文件指定路径字符串更好的方法。我还假设有一种方法可以将makefile创建的所有.o和.d文件放到指定的目录中。 – user7119460

回答

0

用于放置.cpp文件,VPATH是你的朋友,如:

VPATH = ./src ./blah 

...将导致Makefile来寻找在./src您的.cpp文件和./blah(而不​​是只在您的Makefile文件所在的目录)

对于.h文件,你想通过编译器的标志,告诉它到哪里找他们,例如:

CXXFLAGS += -I./headers -I./blah 

将.o文件放入子文件夹的方法可以在here找到。

+0

非常感谢您的帮助!没有意识到添加VPATH非常简单! – user7119460