Какой лучший способ переместить каталог на место в установке Makefile?
В настоящее время я использую обычную технику в своем Makefile для установки отдельных файлов:
install:
install -D executable ${BIN_DIR}
Но я просто столкнулся с ситуацией, когда мне нужно переместить целый каталог и все файлы под ним на место.
Является ли cp -r
лучшим способом или есть ли способ linux-y/unix-y для этого?
Ответы
Ответ 1
Да, трудно подумать о более unix-ish-способе, который cp -r
, хотя -r является относительно поздним дополнением к cp
. Я могу рассказать вам, как мы это делали, и это работает аккуратно в файловых системах и т.д.:
Пусть src
- исходный каталог, который вы хотите переместить, и /path/to/target
- абсолютный путь к цели. Затем вы можете использовать:
$ tar cf - src | (cd /path/to/target; tar xf -)
Ответ 2
Моя версия install(1)
(Debian) имеет:
-d, --directory
treat all arguments as directory names; create all components of the specified directories
-t, --target-directory=DIRECTORY
copy all SOURCE arguments into DIRECTORY
Итак, если вы хотите последовательно использовать install(1)
во всем своем Makefile, вы можете сделать:
install -d destdir
install srcdir/* -t destdir
-t
не является рекурсивным - если srcdir
содержит каталоги, то они не будут скопированы.
Ответ 3
Связывание - еще одна жизнеспособная альтернатива. Это позволит вам поддерживать доступ к нескольким каталогам (представляющим разные версии).