以下を含むMakefileを編集しようとしています。
...
install -d $(DESTDIR)/usr/lib/myApp
install -d $(DESTDIR)/usr/lib/myApp/scripts
install -t $(DESTDIR)/usr/lib/myApp/scripts \
src/scripts/ap.sh \
src/scripts/connect.sh \
src/scripts/devices.sh \
src/scripts/create_ap \
src/scripts/scan.sh
...
読んだ後このQ&A、これらすべてを次に置き換えることができると思いました。
install -D src/scripts/* $(DESTDIR)/usr/lib/myApp/scripts
しかし、上記は私にエラーを与えます。
インストール:ターゲット「/var/lib/jenkins/data/workspace/network-service_build-test@2/build/debian/myApp-service-network/usr/lib/myApp/scripts/network」はディレクトリではありません。
-D
ここでフラグの使用を誤解していますか?私はファイルを指定されたパスに移動し、必要に応じてフォルダを作成する必要があると思います。
答え1
私はあなたが必要だと信じています
install -t "$(DESTDIR)/usr/lib/myApp/scripts/network" -D src/scripts/*
$(DESTDIR)/usr/lib/myApp/scripts/network
これにより、中間ディレクトリを含むファイルが作成されコピーされますsrc/scripts/*
。
テスト(追加の詳細を開く):
$ touch file-{1,2,3,4}
$ install -v -t test/dir -D file-[1-4]
install: creating directory 'test'
install: creating directory 'test/dir'
'file-1' -> 'test/dir/file-1'
'file-2' -> 'test/dir/file-2'
'file-3' -> 'test/dir/file-3'
'file-4' -> 'test/dir/file-4'
これはinstall
coreutils 8.25のGNUでは機能しますが、coreutils 8.4では機能しません。以前のcoreutils実装の場合は、次の2つの手順に進みます。
install -d "$(DESTDIR)/usr/lib/myApp/scripts/network"
install -t "$(DESTDIR)/usr/lib/myApp/scripts/network" src/scripts/*
...またはそのようなもの。