간단한 데비안 저장소 Makefile

간단한 데비안 저장소 Makefile

저는 클라이언트를 위한 매우 기본적인 데비안 저장소를 만들고 있습니다. Bash 스크립트로 시작했지만 작업 중복을 제거하기 위해 Makefile을 사용하기로 결정했습니다. 작동하는 Makefile을 완성했지만, 그럴 때만 가능합니다. make all어떤 이유로 Junzi는 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)

패키지가 MyCoolEmployer라는 폴더에 있다고 가정합니다.패키지 이름_1.0-1000

답변1

귀하의 질문에는 자체 답변이 포함되어 있습니다. 기본적으로 make처리만 수행됩니다 Makefile. "모든" 항목을 먼저 입력해야 합니다.

답변2

$(TARGETS)는 변수가 아니고 어떤 값으로도 설정하지 않기 때문에 "make clean"은 아무 작업도 수행하지 않습니다.

관련 정보