【问题标题】:Makefile directory usageMakefile 目录使用
【发布时间】: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 文件放入指定的目录中。

标签: c++ makefile


【解决方案1】:

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

VPATH = ./src ./blah

... 将导致 Makefile 在 ./src 和 ./blah 中查找您的 .cpp 文件(而不是仅在您的 Makefile 所在的目录中)

对于 .h 文件,您需要向编译器传递一个标志,告诉它在哪里查找它们,例如:

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

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

【讨论】:

  • 非常感谢您的帮助!没想到添加VPATH就这么简单!
猜你喜欢
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 2021-05-19
相关资源
最近更新 更多