[英]How do I store the results of a shell command in a makefile?
我在本地使用MacOS上的GNU Make 3.8(i386-apple-darwin11.3.0)
我正在尝试根据目录中的文件生成一堆测试文件。
现在,我可以获取文件的基本名称,但是我无法弄清楚如何将它们存储在变量中,因此可以生成另一个具有基本名称的文件
TEST_FILES = lib/*.js
build-test:
@mkdir -p tests
-@for file in $(TEST_FILES); do \
echo $$file; \
MYNAMES = $(basename $$file .js) \
echo $MYNAMES; \
done
然后,我想使用STDOUT流的输出创建一堆名为$ MYNAME.log的文件。
这条线在这里
echo $MYNAMES; \
将替换make变量M
的值,就像您写了$(M)YNAMES一样。 你要
echo $$MYNAMES; \
代替。
这条线
MYNAMES = $(basename $$file .js) \
不能正常工作-您正在使用一个make命令的basename
,该basename
只能在调用子shell执行规则之前执行一次,而file
是一个shell变量,它会更改循环的每次迭代。 您可能是用$$(basename $$file)
代替的,它将作为“ $(basename $ file)”传递到外壳。 Shell将插入运行basename
命令的结果。
确保确实要将它们存储在shell变量中,而不是作为make变量。 了解差异至关重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.