- 论坛徽章:
- 0
|
本帖最后由 djsxut 于 2013-08-01 16:36 编辑
include 可以认为像是C语言的头文件包含一样,你在toplevel 的Makefile include 子 Makefile, 主Makefile 依赖于subdir/printstr.o , 而子 Makefile 确是这样:- printstr.o:printstr.c
- gcc -c $^ $(COMPILE_MACRO)
复制代码 肯定是不会匹配这条规则的。 会使用默认规则产生 subdir/printstr.o:- cc -c -o subdir/printstr.o subdir/printstr.c
复制代码 如果禁用隐示规则, 用make -rR 运行下就会有错误提示。 当然你的这个 Makefile 也会提示 main.o 没有规则, 需要自己加上才会提示subdir/printstr.o 没有规则匹配。
- make: *** No rule to make target `main.o', needed by `main'. Stop.
- make: *** No rule to make target `subdir/printstr.o', needed by `main'. Stop.
复制代码 改成这样就会可以:- subdir/printstr.o: subdir/printstr.c
- gcc -c $^ $(COMPILE_MACRO)
复制代码 不过个人感觉子Makefile include 顶层的Makefile好些。 |
|