合并automatic dependency approach with a non-flat src directory structure的问题过于宽泛,所以我要先解决第一个问题。
如何使用src目录结构最佳生成构建目录结构 isomorphic (请参阅下面的 Q1 )?
我的Makefile暂时(现在根本没有依赖处理,这将是关于如何添加组合/甚至独立的独立依赖的下一个问题 - 同构目录结构 - 步骤/目标):
base = .
incdir = $(base)/include
srcdir = $(base)/src
builddir = $(base)/build/debug # To open the possibility for a release build
includes = -I$(incdir)
binary = my_bin
STD = -std=c++14
WARN = -Wall -Wextra
CXXFLAGS = -g $(strip $(includes)) # Most variables stripped before calling the compiler for better readability, but not strictly needed.
ALL_CXXFLAGS = $(STD) $(WARN) $(CXXFLAGS)
COMPILE.cpp = $(CXX) $(strip $(ALL_CXXFLAGS)) $(strip $(CPPFLAGS)) -c
ext = cpp
src = $(wildcard $(srcdir)/*.$(ext))
obj = $(subst $(srcdir),$(builddir),$(src:.$(ext)=.o))
.PHONY: all clean distclean
.SUFFIXES:
.SUFFIXES: .$(ext) .o
all: $(ALL)
$(TARGET): $(obj)
$(CXX) $(OUTPUT_OPTION) $^ $(LDFLAGS) $(LDLIBS)
$(obj): | $(builddir)
$(builddir):
mkdir -p $@
$(builddir)/%.o: $(srcdir)/%.$(ext) $(incdir)/%.h
$(COMPILE.cpp) $(OUTPUT_OPTION) $<
$(builddir)/%.o: $(srcdir)/%.$(ext)
$(COMPILE.cpp) $(OUTPUT_OPTION) $<
我目前需要使用builddir,srcdir和incdir变量的显式目标/先决条件。在我使用自动依赖生成器方式之前,
当前问题:实际上,如果头文件全部填充在include下,并且源文件全部填充在src下,则前一个Makefile可以工作(尽管依赖生成部分)。但是,如果我有,例如,include / src /中的util /子目录(include / util中的头文件将被引用为#include&#34; util / tool1.h&#34;等等,现在在其他地方)这个Makefile会悲惨地失败。