Makefile:选择正确的文件

时间:2018-06-08 13:50:47

标签: makefile gnu-make

我有一个包含数千个媒体文件和以下文件结构的源代码:

files/module/file.vid
files/module/lang/file.vid

如果存在“files/module/lang/file.vid”,我想将其按原样复制到目标。

如果没有,我想将“files/module/file.vid”复制到目标中的“files/module/lang/file.vid”。

如何使用makefile执行此操作?

PS:更准确地说,解决方案是否适合下面的当前部分?

$(foreach lang,$(filter-out en-US,$(gb_HELP_LANGS)),$(eval $(call gb_AllLangPackage_add_files_for_lang,helpcontent2_html_media_lang,$(lang),$(LIBO_SHARE_HELP_FOLDER)$(if $(HELP_ONLINE),/$(PRODUCTVERSION))/media, \

files/scalc/$(lang)/imtrigon.vid \

files/scalc/$(lang)/trigon.vid \

files/scalc/$(lang)/pivot.vid \

files/scalc/$(lang)/functions_ifs.vid \
 )))

由于

1 个答案:

答案 0 :(得分:0)

你可以这样做:

VIDDIR := files/module
LANGDIR := $(VIDDIR)/lang
TARGETDIR := target

VIDFILES := $(notdir $(wildcard $(VIDDIR)/*.vid))

TARGETVIDS := $(addprefix $(TARGETDIR)/,$(VIDFILES))
LANGVIDS := $(addprefix $(LANGDIR)/,$(VIDFILES))

all: $(TARGETVIDS) $(LANGVIDS)

$(TARGETDIR)/%.vid : $(LANGDIR)/%.vid
        cp $< $@

$(LANGDIR)/%.vid: $(VIDDIR)/%.vid
        cp $< $@