我有一个生成文件。
我需要从 src1 和 src2 下的源文件在 C:/bin/ 下构建一组目标。
让他们按顺序说
${DEST_DIR}/ao ${DEST_DIR}/bo ${DEST_DIR}/co ${DEST_DIR}/do
在makefile的某些部分
DEST_DIR = C:/bin
SRC_DIR1 = C:/src1
SRC_DIR2 = C:/src2
我有他们的规则如下
#规则1
${DEST_DIR}/%.o : ${SRC_DIR1}/%.c
#the command required to build the target
echo "Source: $< Target: $@ "
#规则#2
${DEST_DIR}/%.o : ${SRC_DIR2}/%.c
#the command required to build the target
echo "Source: $< Target: $@ "
让 ac 和 bc 在 SRC_DIR1 中, cc 和 dc 在 SRC_DIR2 中
当我构建它时,它构建得很好,为 ao 和 bo 执行规则#1,然后为 co 执行规则#2 并执行
我没想到会没事。因为我期待它适用于 co 的规则#1 并抛出一个错误,说“没有规则来制作目标 cc”。但它适用于规则#2,并从 SRC_DIR2 中的 cc 构建 co。
有人可以解释一下它是如何工作的吗?在这种情况下,通配符如何%
工作以及规则匹配如何发生?