【发布时间】:2009-09-09 07:43:06
【问题描述】:
我有一个生成文件。
我需要从 src1 和 src2 下的源文件在 C:/bin/ 下构建一组目标。
让他们按顺序被要求说
${DEST_DIR}/a.o ${DEST_DIR}/b.o ${DEST_DIR}/c.o ${DEST_DIR}/d.o
在makefile的某些部分
DEST_DIR = C:/bin
SRC_DIR1 = C:/src1
SRC_DIR2 = C:/src2
我有他们的规则如下
#rule#1
${DEST_DIR}/%.o : ${SRC_DIR1}/%.c
#the command required to build the target
echo "Source: $< Target: $@ "
#rule#2
${DEST_DIR}/%.o : ${SRC_DIR2}/%.c
#the command required to build the target
echo "Source: $< Target: $@ "
让 a.c 和 b.c 在 SRC_DIR1 中,而 c.c 和 d.c 在 SRC_DIR2 中
当我构建它时,a.o 和 b.o 的规则#1,c.o 和 d.o 的规则#2
我没想到会没事。因为我期待它适用于 c.o 的规则#1 并抛出一个错误,说“没有规则来制作目标 c.c”。但它适用于规则#2,并从 SRC_DIR2 中的 c.c 构建 c.o。
谁能解释一下它是如何工作的?在这种情况下,通配符% 是如何工作的?如何进行规则匹配?
【问题讨论】:
标签: build makefile target rules