【发布时间】:2012-08-05 00:34:36
【问题描述】:
我知道以下 makefile 将使预处理器自动生成依赖项(在 .d 文件中)并将它们包含在 makefile 中(因为我的课程笔记是这样说的),因此它们不必自动维护。 -MMD 标志对此负责。我不明白的是: .d 文件是在什么时候生成的?甚至没有任何使用${CXXFLAGS} 的命令。大概,像${CXX} ${CXXFLAGS} -c x.C -o x.o 这样的命令会被make 自动推导出每个目标文件,但是如果这些是生成.d 文件的命令,我们不是已经过了知道xo 的依赖关系的地步吗,哟如果我们只通过执行生成这些 .o 文件的命令来了解它们,那么 zo 可能是相关的吗? (假设有 .h 文件,如果让其自行推断规则或其他东西,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 # executable name
${EXEC} : ${OBJECTS} # link step
${CXX} ${OBJECTS} -o ${EXEC}
-include ${DEPENDS} # copies files x.d, y.d, z.d (if they exist)
【问题讨论】:
-
您的最后一行
-include将文件复制到确切的位置?
标签: makefile dependencies g++