
У меня есть makefile, который устанавливает множество файлов в моем целевом каталоге сборки. Некоторые из них исполняемые, некоторые нет.
Я тестировал install
команду с флагами -D -m 644
для неисполняемых файлов ранее в Linux, но теперь она сломалась. Я обнаружил, что этот -D
флаг недоступен в OSX/BSD, и удалил его. Дело в том, что мне нужно убедиться, что каталоги компонентов в путях устанавливаемых мной файлов создаются по мере необходимости. Я думал, что флаг -d
поможет, и пробовал что-то вроде этого:
install .DS_Store ./tmp/build/some_dir/
...но он жалуется, что some_dir
"нет такого файла или каталога", т.е. он не существует (что правда). Затем я попробовал то же самое, что и выше, но с флагом -d
, и получил другую ошибку:
установить: .DS_Store существует, но не является каталогом
Мне просто нужен более или менее стабильный и универсальный способ копирования файлов в место назначения. Может, мне стоит прибегнуть к cp
? Я знаю небольшие, но важные различия между ними.
решение1
install -d
интерпретирует все свои аргументы как каталоги, которые (возможно) нужно создать. Таким образом, я думаю, вам нужно сделать это двумя командами:
install -d ./tmp/build/some_dir/
install .DS_Store ./tmp/build/some_dir/