Makefile:选择正确的文件
我有一个包含数千个媒体文件和以下文件结构的源代码:Makefile:选择正确的文件,makefile,gnu-make,Makefile,Gnu Make,我有一个包含数千个媒体文件和以下文件结构的源代码: files/module/file.vid files/module/lang/file.vid 如果存在“files/module/lang/file.vid”,我想按原样将其复制到目标 如果没有,我想将“文件/module/file.vid”复制到目标中的“文件/module/lang/file.vid” 如何使用makefile实现这一点 PS:更准确地说,解决方案是否适合下面的当前部分 $(foreach lang,$(filter-
files/module/file.vid
files/module/lang/file.vid
如果存在“files/module/lang/file.vid
”,我想按原样将其复制到目标
如果没有,我想将“文件/module/file.vid
”复制到目标中的“文件/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 \
)))
谢谢您可以这样做:
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 $< $@
VIDDIR:=文件/模块
LANGDIR:=$(VIDDIR)/lang
TARGETDIR:=目标
VIDFILES:=$(notdir$(通配符$(VIDDIR)/*.vid))
TARGETVIDS:=$(添加前缀$(TARGETDIR)/,$(视频文件))
LANGVIDS:=$(addprefix$(LANGDIR)/,$(VIDFILES))
全部:$(TARGETVIDS)$(LANGVIDS)
$(TARGETDIR)/%.vid:$(LANGDIR)/%.vid
cp$<$@
$(LANGDIR)/%.vid:$(VIDDIR)/%.vid
cp$<$@
我不明白你所说的“复制到目标”或“复制到目标”是什么意思。“target”是您在这里没有描述的其他目录吗?是的,target是构建的目标目录。