【问题标题】:MAKEFILE get list of files and joinMAKEFILE 获取文件列表并加入
【发布时间】:2014-01-08 21:34:00
【问题描述】:

我正在尝试收集某种类型的文件列表并将它们加入一个文件,然后将它们放在我的应用程序的一个区域中,这就是它的外观

FILETYPE_DIRECTORY = /mydirectory
FILETYPE_SRCFILES = $(find $(FILETYPE_DIRECTORY)/ -type f -and -name '*.ft')

filetype-collected: $(FILETYPE_SRCFILES)
     mkdir $(FILETYPE_DIRECTORY)/filetype-collected;
     cat $(FILETYPE_SRCFILES) > compressed.ft;
     mv compressed.ft $(FILETYPE_DIRECTORY)/filetype-collected;

我得到的回应是这样的

mkdir /mydirectory/filetype-collected;
cat  > compressed.ft;

并且应用程序没有继续(没有加入任何文件类型),是什么问题 - O 也尝试过替换

cat $(FILETYPE_SRCFILES) 

cat $(wildcard $(FILETYPE_SRCFILES)) 

对不起,如果这真的很基本,我是 MAKEFILEs 的新手

【问题讨论】:

  • echo $(FILETYPE_SRCFILES) 添加到操作中会得到什么?
  • 您在每个操作之前都有 TAB 吗? (这里没有。)

标签: shell unix terminal makefile


【解决方案1】:

这可能行不通。试试:

FILETYPE_SRCFILES = $(shell find $(FILETYPE_DIRECTORY)/ -type f -and -name '*.ft')

而不是你所拥有的 FILETYPE_SRCFILES。你也可以用更少的步骤写这个对我来说似乎更清楚一点:

$(FILETYPE_DIRECTORY)/filetype-collected/compressed.ft : $(FILETYPE_SRCFILES)
        mkdir $(dir $@)
        cat $^ > $@

【讨论】:

  • 对于 OP:从 $(shell ...) 函数分配时,您应该使用 :=,而不是 =。前者效率更高(每次使用变量时都使用后者,整个 shell 命令将从头开始再次运行)。为了安全起见,我会使用mkdir -p,而不是mkdir
猜你喜欢
  • 2014-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多