我想在Makefile中获取文件名的基名;但它总是失败:basename命令不起作用。 这里是我的代码:Makefile中的Bash命令
list = a.xlib b.lib
all:
for each_lib in $(notdir $(list)); \
do \
if [[ $$each_lib == *.xlib ]]; then \
*** Here I need to get the basename of $$each_lib to some variable, say base_lib *** \
cp -p $$base_lib-un.xlib ../../dist/lib/$$each_lib \
else \
cp -p $$each_lib ../../dist/lib/$$each_lib \
fi; \
done;
如果我们可以创建列表中的每个文件的基本名称的值的变量,那将是完美的。 谢谢。
感谢您的回答。 请注意,我需要更改基本文件名称。例如, 需要将a.xlib更改为a-un.xlib; 当我看了一下shell替换,它没有这样的功能。我可以问你更多意见吗? – user2646171
您绝对可以在shell中进行这种替换,但除非您需要基于shell结果进行转换决策,否则您应该可以直接在make中完成所有操作,然后在翻译的结果上运行shell命令。充分解释你的投入,产出和目标可能会有所帮助。 –
我修改了上面的代码;那是我需要的。 – user2646171