【发布时间】:2016-12-20 01:14:21
【问题描述】:
我意识到这是一个常见的查询,但我花了几个小时查看以前的答案,但仍然不知所措。我没有大量使用 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 $@
.cpp.o:
$(CC) -MD -I. $(CFLAGS) $< -o $@
clean:
-rm -rf $(OBJS) $(EXECUTABLE) $(OBJS:%.o=%.d)
-include $(OBJS:%.o=%.d)
按我的意愿工作。但是,如果我能够将 .h .cpp .o 和 .b 文件整齐地组织到 /header/ /source/ 和 /object/ 相关子目录中,那就更好了。请你解释一下怎么做?
非常感谢
【问题讨论】:
-
是否要为 .h、.cpp、.o 创建单独的文件夹并添加这些文件夹的路径?
-
如果可能的话是的。我认为有比单独指定每个文件的路径字符串更好的方法。而且我还假设有一种方法可以将 makefile 创建的所有 .o 和 .d 文件放入指定的目录中。