ディレクトリをコピーし、その構造を維持するためのメイクファイルルールを記述しようとしています。メイクファイル内の他のすべてのルールはinstall
を使用しているため、一貫性を保つ必要がありました。
マンページには次のように書かれています:
あらすじ
install [OPTION]... [-T] SOURCE DEST install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE... install [OPTION]... -d DIRECTORY... -d, --directory treat all arguments as directory names; create all components of the specified directories
OK、それは私が必要としているように聞こえます...しかし、フラグは意味がありません。インストール先のディレクトリをどのように指定しますか?
ローカルハードディスクに任意のディレクトリ構造を作成して、基本的なテストを実行してみました。
~>tree test
test
├── a
│ └── b
│ └── c
│ └── e.txt
└── d
4 directories, 1 file
そしてinstall -d
と作成されたものを見る:
~>install -d test test2
~>tree test2
test2
0 directories, 0 files
何も起こらなかった!
誰かが私を正しい方向に向けることができますか? 「gnu install -d flag」をグーグルにしても、あまり効果はありません。
install -D
コマンドが実際に必要なコマンドのようです。
マンページ:
-D最後を除くDESTのすべての主要コンポーネントを作成し、SOURCEをDESTにコピーします
すべてのファイルを個別に指定する必要があることを除いて、うまく機能します。
install -d
は、ディレクトリを作成するために使用されます。 test
とtest2
の2つのディレクトリを作成するように指示しました。 test
はすでに存在しているため、必要なのはmake test2
だけでした。 install
がディレクトリツリー全体のコピーをサポートしているとは思いません。通常はファイルで使用されます。おそらくcp
を使用する必要があります
通常、あなたが望むのは、自分自身を繰り返すことなく、正しいフォルダにファイルをインストールすることです。検索とインストールを使用して、インストールスクリプトをより乾燥した状態に保つことができます。
find SOURCE/ -type f -exec install -vDm 755 {} THERE/{} \;