Gcc 具有多个目标和使用g+自动生成依赖项的Makefile+-毫米波
描述一个用于单个目标的非常优雅的makefile:Gcc 具有多个目标和使用g+自动生成依赖项的Makefile+-毫米波,gcc,makefile,dependencies,Gcc,Makefile,Dependencies,描述一个用于单个目标的非常优雅的makefile: CXX = g++ # compiler CXXFLAGS = -g -Wall -MMD # compiler flags OBJECTS = x.o y.o z.o # object files forming executable DEPENDS = ${OBJECTS:.o=.d} # substitutes ".o" with ".d" EXEC = a.out
CXX = g++ # compiler
CXXFLAGS = -g -Wall -MMD # compiler flags
OBJECTS = x.o y.o z.o # object files forming executable
DEPENDS = ${OBJECTS:.o=.d} # substitutes ".o" with ".d"
EXEC = a.out # executable name
${EXEC} : ${OBJECTS} # link step
${CXX} ${OBJECTS} -o ${EXEC}
-include ${DEPENDS} # copies files x.d, y.d, z.d (if they exist)
我的问题是:我们如何将其应用于多个目标?我已经拼凑出了一个似乎可行的解决方案,但我想知道这是否是合适的技术
CXX = g++ # compiler
CXXFLAGS = -g -Wall -MMD # compiler flags
LINK = ${CXX} $^ -o $@ # link step
exec_x: a.o b.o c.o
${LINK}
exec_y: d.o e.o f.o
${LINK}
-include *.d
您的解决方案看起来不错,但如果有许多目标,则更易于扩展:
EXECS = exec_x exec_y
exec_x: a.o b.o c.o
exec_y: d.o e.o f.o
$(EXECS):
${LINK}