一个简单的 Debian Repo 的 Makefile

Jus*_*ist 3 make debian dpkg

我正在为客户制作一个非常基本的 Debian 存储库。从 bash 脚本开始,但决定使用 Makefile 来消除重复工作。我已经敲定了一个有效的 Makefile,但只有当我make all. 出于某种原因,一条直线make只会建立第一个 deb。make clean什么也没做。我究竟做错了什么?

MFGR:=MyCoolEmployer
MAJOR:=1
MINOR:=0
REVISION:=1000
VERSION:=$(MAJOR).$(MINOR)-$(REVISION)
MODELS:=SpiffyModel1 SpiffyModel2
COMMON:=common
SOFT_TARGETS:=$(COMMON) $(MODELS)
SOFT_TARGET_FOLDERS:=$(patsubst %, $(MFGR)-%_$(VERSION), $(SOFT_TARGETS))
DEBs := $(patsubst %, %.deb, $(SOFT_TARGET_FOLDERS))
REPO_DEBs :=$(patsubst %, Repo/binary/%, $(DEBs))
REPO=repo.zip
PACKAGES_GZ := Repo/binary/Packages.gz

%.deb: %
    dpkg-deb --build $<

$(REPO_DEBs): $(DEBs)
    cp $^ Repo/binary/

$(PACKAGES_GZ): $(REPO_DEBs)
    dpkg-scanpackages Repo/binary /dev/null | gzip -9c > $@

$(REPO): $(REPO_DEBs) $(PACKAGES_GZ)
    cd Repo; zip -r -v -0 ../$@ . ; cd ..

TARGETS: $(REPO) $(PACKAGES_GZ) $(REPO_DEBs) $(DEBs)

all:    TARGETS

clean:
    rm -f $(TARGETS)
Run Code Online (Sandbox Code Playgroud)

这假设包作为名为 MyCoolEmployer- PACKAGENAME _1.0-1000 的文件夹存在

G-M*_*ca' 7

您的问题包含它自己的答案。默认情况下,make仅处理Makefile. 您需要首先放置“全部”条目。


sto*_*ent 6

“make clean”什么也不做,因为 $(TARGETS) 不是变量,您从未将其设置为任何值。