0

我有这个makefile,应该下载并构建openssh(以及其他东西):

ROOT_DIR=$(PWD)
DATA_DIR=$(ROOT_DIR)/data
SOURCES_DIR=$(ROOT_DIR)/sources
RESOURCES_DIR=$(ROOT_DIR)/resources
DRAFTS_DIR=$(ROOT_DIR)/drafts

$(SOURCES_DIR):
    mkdir $(SOURCES_DIR)

$(RESOURCES_DIR):
    mkdir $(RESOURCES_DIR)

$(DRAFTS_DIR):
    mkdir $(DRAFTS_DIR)

openssh-tar-url="ftp://ftp.cc.uoc.gr/mirrors/OpenBSD/OpenSSH/portable/openssh-6.2p2.tar.gz"
TAR_PROJECTS += openssh
openssh:
    echo "Building $@"

openssh-clean: openssh-archive-clean

.SECONDEXPANSION :
$(TAR_PROJECTS) :  $(SOURCES_DIR) $(SOURCES_DIR)/$$@-archive

$(DRAFTS_DIR)/%.tar.gz: $(DRAFTS_DIR)
    echo "Pulling $*."
    wget $($*-tar-url) -O $(DRAFTS_DIR)/$*.tar.gz

.SECONDEXPANSION :
$(SOURCES_DIR)/%-archive : | $(DRAFTS_DIR)/$$*.tar.gz
    mkdir $@
    cd $@ && tar xvzf $(DRAFTS_DIR)/$*.tar.gz

%-archive-clean:
    rm -rf $(SOURCES_DIR)/$*-archive $(DRAFTS_DIR)/$*.tar.gz

当我运行make openssh它时,它运行正常,但最后它会删除它下载的存档。这对我来说很奇怪:

$ make openssh --just-print
echo "Pulling openssh."
wget "ftp://ftp.cc.uoc.gr/mirrors/OpenBSD/OpenSSH/portable/openssh-6.2p2.tar.gz" -O /home/fakedrake/Projects/ThinkSilicon/xilinx-zynq-bootstrap/drafts/openssh.tar.gz
mkdir /home/fakedrake/Projects/ThinkSilicon/xilinx-zynq-bootstrap/sources/openssh-archive
cd /home/fakedrake/Projects/ThinkSilicon/xilinx-zynq-bootstrap/sources/openssh-archive && tar xvzf /home/fakedrake/Projects/ThinkSilicon/xilinx-zynq-bootstrap/drafts/openssh.tar.gz
echo "Building openssh"
rm /home/fakedrake/Projects/ThinkSilicon/xilinx-zynq-bootstrap/drafts/openssh.tar.gz
4

1 回答 1

2

很确定您可以列出目标(和中间体).PRECIOUS以避免它们被您删除。恐怕您需要 RTFM 了解更多详细信息 - 这些天我在视觉工作室而不是制作,所以我的制作技巧有点生疏......

于 2013-08-27T01:16:35.047 回答