我想在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