我一直在使用Makefile并保留一些东西sepparate我决定包含一个新的常见makefile。我遇到的问题是我的第一个makefile看起来像这样:
Filename Makefile.test
include ./Makefile.a
all: a b c
b:
@echo "b"
c:
@echo "c"
Filename Makefile.a
a:
@echo "a"
当我执行我的makefile时:make -f Makefile.test我只打印出“a”并完成。
使其成功的唯一方法是将所有内容包括在下面(任何地方)all:target
这有什么原因让人觉得这个吗?
谢谢!
答案 0 :(得分:10)
当你这样说时:
include ./Makefile.a
make Makefile.a
只需将#include <x.h>
拉入当前Makefile,就像Makefile.a
在C中一样:它插入include
的内容来替换a:
@echo "a"
all: a b c
b:
@echo "b"
c:
@echo "c"
语句并保持去。结果是make在开始弄清楚要做什么时会看到这个:
a
因此,源顺序中的第一个目标将是all
,并且由于您未指定目标,因此make将使用第一个目标。这就是你的结果来源。
如果您愿意,可以明确指定make -f Makefile.test all
目标:
all
这将使用Makefile.test
目标,无论它出现在Makefile中的哪个位置。
如果您正在使用GNU Make,那么您可以使用.DEFAULT_GOAL
在include ./Makefile.a
all: a b c
b:
@echo "b"
c:
@echo "c"
.DEFAULT_GOAL := all
内指定默认目标,然后您就不必担心订单:
{{1}}
感谢Idelic提醒您。