代码之家  ›  专栏  ›  技术社区  ›  TheRoadrunner

gnu将文件复制到发行版目录

  •  1
  • TheRoadrunner  · 技术社区  · 14 年前

    我将源HTML(和图像等)保存在单独的目录中,以进行源代码控制。 制作发行版的一部分是让make copy files输出文件夹并设置属性。

    今天我的makefile显示(解压):

    %.html:
        /usr/bin/install -c -p -m 644 $< $@ 
    
    www: $(HTMLDST)/firmware.html $(HTMLDST)/firmware_status.html $(HTMLDST)/index.html
    $(HTMLDST)/firmware.html: $(HTMLSRC)/firmware.html 
    $(HTMLDST)/firmware_status.html: $(HTMLSRC)/firmware_status.html 
    $(HTMLDST)/index.html: $(HTMLSRC)/index.html 
    

    这只显示了三个html文件,但实际上,有很多。

    我只想列出文件名(不带路径),并在源和目标之间进行比较,然后复制已更新的文件。

    提前谢谢你 斯伦

    1 回复  |  直到 14 年前
        1
  •  4
  •   Beta    14 年前

    这应该做到:

    $(HTMLDST)/%.html: $(HTMLSRC)/%.html
        /usr/bin/install -c -p -m 644 $< $@ 
    
    www: $(HTMLDST)/firmware.html $(HTMLDST)/firmware_status.html $(HTMLDST)/index.html
    

    或者,为了简洁起见:

    HTMLFILES = firmware firmware_status index
    
    DESTFILES = $(patsubst %,$(HTMLDST)/%.html,$(HTMLFILES))
    
    $(HTMLDST)/%.html: $(HTMLSRC)/%.html
        /usr/bin/install -c -p -m 644 $< $@ 
    
    .PHONY: www
    www: $(DESTFILES)