我在使用makefile时遇到了困难。
所以在配方中,我在for循环中创建一个文件(带有名称和.ujc扩展名),并希望在末尾有一个文本文件,其中包含所有创建的文件。目的是将其提供给应用程序。
例如,在半高级示例中,
List= [Class1,Class2,Class3]
foreach(Class C in List) {
#do operations on C > outputs a ClassX.ujc file
# add name of file to a text file named "list_of_files"
}
最后我应该有一个文本文件list_of_files.txt,其中包含以下字符串:
Class1.ujc Class2.ujc Class3.ujc
作为参考,我现在拥有的代码(以及上面提到的一些内容但不起作用)是:
pc: $(APP)
$(foreach C, $(shell echo $(CLASS) | tr ',' ' '), \
make -C BUILDENV CLASS=$(C) BUILD=just_filelist OUTPUT=filelist.txt SKIPSELF=yes && \
../classCvt/classCvt <./Applications/$(C).class> ./Applications/$(C).ujc && \
cat app_file_list.txt | xargs echo ./Applications/$(C).ujc >app_file_list.txt && \
) true
time -p ./$(APP) `cat app_file_list.txt` `cat filelist.txt`
内部make会生成一个文件列表,它被提供给应用程序,但我也想提供app_file_list,但它的构造完全错误。
可能很简单,但我没有到达那里。
编辑:
以下代码可以满足我的需求:
pc: $(APP)
rm -f cat app_file_list.txt
$(foreach C, $(shell echo $(CLASS) | tr ',' ' '), \
make -C BUILDENV CLASS=$(C) BUILD=just_filelist OUTPUT=filelist.txt SKIPSELF=yes && \
../classCvt/classCvt <./Applications/$(C).class> ./Applications/$(C).ujc && \
cat app_file_list.txt | echo ./Applications/$(C).ujc >>app_file_list.txt && \
) true
time -p ./$(APP) `cat app_file_list.txt` `cat filelist.txt`
我犯的明显错误是xargs。
答案 0 :(得分:0)
(也在帖子中) 事实证明解决方案并不那么困难。我需要删除xargs命令并在&#39; cat app_file_list.txt中执行正确的操作(即&gt;&gt;而不是&gt;)。等等...&#39;线。 下面的代码符合我的要求:
pc: $(APP)
rm -f cat app_file_list.txt
$(foreach C, $(shell echo $(CLASS) | tr ',' ' '), \
make -C BUILDENV CLASS=$(C) BUILD=just_filelist OUTPUT=filelist.txt SKIPSELF=yes && \
../classCvt/classCvt <./Applications/$(C).class> ./Applications/$(C).ujc && \
cat app_file_list.txt | echo ./Applications/$(C).ujc >>app_file_list.txt && \
) true
time -p ./$(APP) `cat app_file_list.txt` `cat filelist.txt`
我犯的明显错误是导致字符串重复进入.txt文件的xargs。