간단한 데비안 저장소를 위한 Makefile

간단한 데비안 저장소를 위한 Makefile

저는 클라이언트를 위한 매우 기본적인 데비안 저장소를 만들고 있습니다. 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)

이는 패키지가 MyCoolEmployer라는 폴더로 존재한다고 가정합니다.패키지 이름_1.0-1000

답변1

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

답변2

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

관련 정보