Makefile: выберите правильный файл - PullRequest
0 голосов
/ 08 июня 2018

У меня есть исходный код с тысячами медиа-файлов и следующей файловой структурой:

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

, если существует 'files/module/lang/file.vid', я хочу скопировать его в целевой объект как есть.

если нет, я хочу скопировать 'files/module/file.vid' в 'files/module/lang/file.vid' в target.

Как я могу сделать это с 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 голосов
/ 08 июня 2018

Вы можете сделать это:

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 $< $@
...