Каков наилучший способ переместить каталог на место при установке Makefile?

StackOverflow https://stackoverflow.com/questions/417236

  •  03-07-2019
  •  | 
  •  

Вопрос

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

install:
    install -D executable ${BIN_DIR}

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

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

Это было полезно?

Решение

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

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

$ tar cf - src | (cd /path/to/target; tar xf -)

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top