現在、Makefile で通常の手法を使用して、個々のファイルをインストールしています。
install:
install -D executable ${BIN_DIR}
しかし、ディレクトリ全体とその下にあるすべてのファイルを所定の位置に移動する必要がある状況に遭遇しました。
これを行うための最良の方法はcp -r
ありますか、それともよりlinux-y/unix-yの方法がありますか?
現在、Makefile で通常の手法を使用して、個々のファイルをインストールしています。
install:
install -D executable ${BIN_DIR}
しかし、ディレクトリ全体とその下にあるすべてのファイルを所定の位置に移動する必要がある状況に遭遇しました。
これを行うための最良の方法はcp -r
ありますか、それともよりlinux-y/unix-yの方法がありますか?
cp -r
ええ、 -r は に比較的遅れて追加されましたが、より UNIX 風の方法を考えるのは難しい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
したがって、Makefile 全体で一貫して使用したい場合は、次のようにinstall(1)
することができます。
install -d destdir
install srcdir/* -t destdir
-t
ただし、再帰的ではありませんsrcdir
。ディレクトリが含まれている場合、それらはコピーされません。
リンクは別の実行可能な代替手段です。これにより、複数のディレクトリ(異なるバージョンを表す)にアクセスできるようになります。