В моем Makefile Я пытаюсь скопировать список файлов из location1 в location2, а затем в location2 в location3. Я получил следующее странное поведение:GNU make loop variable странное поведение
FILES_LIST=dir1/file1 dir2/file2 dir3/file3 ........
mytarget:
for file in $(FILES_LIST) ; do \
#this works
cp -vf location1/$$file location2/$(shell $$file##*/) ; \
#this does not work
cp -vf location2/$(shell $$(file)##*/) location3/ ; \
done
Я использую "$ (оболочки $$ (файл) ## /)" раздеть "dir1 /" часть каждого элемента в FILES_LIST. Первый cp работает (от местоположения 1 до 2), однако отправка не выполняется, журнал сборки показывает, что «$ (shell $$ (file) ## /)» оценивается как пустое.
Я использую GNU Make 3.81
Вы прямо на месте сэр! Спасибо за подробное объяснение. "cp -vf location2/$$ {file ## * /} location3 /; \" работал для меня – user3894299