makefile缩小文件

makefile缩小文件,makefile,Makefile,下面的代码不起作用,但旨在说明我想要实现的目标。我怎样才能使这个代码工作,或者有更好的方法。我想把我所有的CSS文件合并成一个文件,但要确保BASE_CSS下的所有文件都位于该文件的顶部 BASE_CSS = %reset.css %reset2.css %reset3.css IGNORE_CSS = %main.min.css $(BASE_CSS) CSS_FILES = $(filter-out $(IGNORE_CSS),$(wildcard \ public/css/*.css

下面的代码不起作用,但旨在说明我想要实现的目标。我怎样才能使这个代码工作,或者有更好的方法。我想把我所有的CSS文件合并成一个文件,但要确保BASE_CSS下的所有文件都位于该文件的顶部

BASE_CSS = %reset.css %reset2.css %reset3.css
IGNORE_CSS = %main.min.css $(BASE_CSS)

CSS_FILES = $(filter-out $(IGNORE_CSS),$(wildcard \
  public/css/*.css \
  public/css/*/*.css \
  public/css/*/*/*.css \
))

minify:
  cat $(BASE_CSS) $(CSS_FILES) > public/css/main.min.css

这将实现我认为您想要的:

# Note the ":=".
# If we use "=", it will run "find" every time ALL_CSS_FILES is mentioned.
ALL_CSS_FILES := $(shell find public/css -name *.css)

BASE_PATTERN = %reset.css %reset2.css %reset3.css

BASE_CSS = $(filter $(BASE_PATTERN), $(ALL_CSS_FILES))

CSS_FILES = $(filter-out $(BASE_PATTERN) %main.min.css, $(ALL_CSS_FILES))

minify:
        cat $(BASE_CSS) $(CSS_FILES) > public/css/main.min.css                
编辑:
要指定顺序,只需执行以下操作:

BASE_CSS = $(filter %reset.css, $(ALL_CSS_FILES))
BASE_CSS += $(filter %reset2.css, $(ALL_CSS_FILES))
BASE_CSS += $(filter %reset3.css, $(ALL_CSS_FILES))

谢谢有没有办法指定reset.css、reset2.css和reset3.css的顺序?