Makefile 为什么我的make过程在包含规则和手动内联规则时显示不同的行为

Makefile 为什么我的make过程在包含规则和手动内联规则时显示不同的行为,makefile,Makefile,我有一个Makefile,其中包括以下两行: yank: mkdir yank 当它们在Makefile中时,整个make过程都会运行。但是,当我将它们移动到这个Makefile包含的文件中时,只生成目标“yank”,而不是最终目标 整个makefile如下 include ../../Makefile.include #VER := AUTHOR := metaperl PKG := shell-current-directory REPO := $(PKG) GEST :=

我有一个Makefile,其中包括以下两行:

yank:
    mkdir yank
当它们在Makefile中时,整个make过程都会运行。但是,当我将它们移动到这个Makefile包含的文件中时,只生成目标“yank”,而不是最终目标

整个makefile如下

include ../../Makefile.include


#VER  :=
AUTHOR := metaperl
PKG  := shell-current-directory
REPO := $(PKG)
GEST := $(PKG).elc
URL  := https://github.com/$(AUTHOR)/$(PKG).git

$(EDAN_EL) : $(WARES)/$(GEST)
    $(APPEND_EDAN) $(PKG) $(EDAN_EL) "`$(FILLIN) init.el --load_path $(WARES) --pkg $(PKG)`"

$(WARES)/$(GEST): yank/$(REPO)/$(PKG).elc
    cp $< $@


yank/$(REPO)/$(PKG).elc: yank/$(REPO)/$(PKG).el

yank/$(REPO)/$(PKG).el: yank/$(REPO)

yank/$(REPO) : yank
    cd yank && git clone $(URL)

yank:
    mkdir yank


$(phony clean):
    $(RM) -rf $(WARES)/gist.el
include.././Makefile.include
#版本:=
作者:=metaperl
PKG:=shell当前目录
回购:=$(每件)
GEST:=$(包装)。elc
网址:=https://github.com/$(作者)/$(PKG.git
$(电子版):$(商品)/$(最大)
$(APPEND_-EDAN)$(PKG)$(EDAN_-EL)“`$(FILLIN)init.EL--load_-path$(商品)--PKG$(PKG)`”
美元(商品)/$(最大):yank/$(回购)/$(包装)。elc
cp$<$@
yank/$(回购)/$(包装)。elc:yank/$(回购)/$(包装)。el
yank/$(回购)/$(包装)。el:yank/$(回购)
yank/$(回购):yank
cd yank和git clone$(URL)
猛拉:
mkdir yank
$(假清洁):
$(RM)-rf$(商品)/gist.el

仅键入时运行的目标

make
是在makefile中找到的第一个目标。因此,如果您的include文件中有一个目标,那么它将被选为“默认”目标

只需添加一个“虚拟”


在您的文件开头的包含或类似内容之前。

我明白了。但是,默认目标也在顶级Makefile中定义,因此在加载.include文件之前,我无法将其作为默认目标。和
all: your_default_target_here