我的makefile中有一个构建目标,用于压缩.js文件,但它试图重新压缩.min.js文件。我想从我的$(通配符)文件列表中排除那些.min.js文件,但是我知道如何执行此操作。
想法?
目前有这个设置,显然会返回.min.js。
CSS_MIN := $(patsubst %.css, %.min.css, $(wildcard $(CSS)/*.css))
JS_MIN := $(patsubst %.js, %.min.js, $(wildcard $(JS)/*.js))
答案 0 :(得分:2)
使用$(filter-out)
功能(Text Functions):
$(过滤模式......,文字)
Returns all whitespace-separated words in text that do match any of the pattern words, removing any words that do not match. The patterns are written using ‘%’, just like the patterns used in the patsubst function above.
$(过滤模式......,文字)
返回文本中与任何模式单词不匹配的所有以空格分隔的单词,删除与一个或多个匹配的单词。这与过滤功能完全相反。
例如,给定:
objects=main1.o foo.o main2.o bar.o mains=main1.o main2.o
以下内容生成一个列表,其中包含不在“主电源”中的所有目标文件:
$(filter-out $(mains),$(objects))
所以使用
JS_MIN := $(patsubst %.js, %.min.js, $(filter-out %.min.js,$(wildcard $(JS)/*.js)))
或
JS_MIN := $(filter-out %.min.min.js,$(patsubst %.js, %.min.js, $(wildcard $(JS)/*.js)))