Каков наилучший способ переместить каталог на место при установке Makefile? - PullRequest
11 голосов
/ 06 января 2009

В настоящее время я использую обычную технику в моем Makefile для установки отдельных файлов:

install:
    install -D executable ${BIN_DIR}

Но я только что натолкнулся на ситуацию, когда мне нужно переместить весь каталог и все файлы под ним на место.

Является ли cp -r лучшим способом или есть более подходящий способ Linux-y / unix-y?

Ответы [ 3 ]

6 голосов
/ 06 января 2009

Да, трудно придумать более unix-ish способ, чем cp -r, хотя -r является относительно поздним дополнением к cp. Я могу рассказать вам, как мы использовали для этого, и это прекрасно работает в файловых системах и так далее:

Пусть src будет исходным каталогом, который вы хотите переместить, а /path/to/target будет абсолютным путем к цели. Тогда вы можете использовать:

$ tar cf - src | (cd /path/to/target; tar xf -)
3 голосов
/ 06 января 2009

Моя версия 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 содержит каталоги, они не будут скопированы.

0 голосов
/ 06 января 2009

Связывание - еще одна жизнеспособная альтернатива. Это позволит вам поддерживать доступность нескольких каталогов (представляющих разные версии).

...