私は最初のライブラリを構築しようとしています。
ライブラリは異なるアーキテクチャにインストールする必要があります。i386 用にビルドされたライブラリは通常 /usr/lib/i386-linux-gnu/ にありますが、amd64 用にビルドされた場合は /usr/lib/amd64-linux-gnu/ に移動します
だから、私のdebian/rulesファイル
#!/usr/bin/make -f
export DH_VERBOSE=1
%:
dh $@
override_dh_auto_configure:
dh_auto_configure -- LIB_INSTALL_DIR=/usr/lib/$(DEB_HOST_MULTIARCH)
.pro ファイル内で LIB_INSTALL_DIR を取得できます。
isEmpty(LIB_INSTALL_DIR){
message("LIB_INSTALL_DIR is empty. It shouldn't be if this isn't an example build.")
DESTDIR = .
} else {
DESTDIR = $$LIB_INSTALL_DIR
}
message(Library will be placed at $$DESTDIR)
問題は、DESTDIR がライブラリを自分のファイルシステムに送信しようとし、それを deb パッケージにビルドしようとしないことです。たとえば、自分の /usr/lib/i386-linux-gnu/ に送信しようとしますが、許可がないため送信できません。
一方で、
target.files = *.so
target.path = $$LIB_INSTALL_DIR
INSTALLS+=target
同様に失敗します。.deb パッケージ内に、作成された /usr/lib/i386-linux-gnu/ フォルダーがありますが、これは空です。これは、INSTALLS が、ビルド時間の後ではなく、ビルド時間の前に実行する必要があるインストールを実行するためです。
最後に、debian/install 内で変数を渡すことができません。これは非常に便利です。
これが Qt の質問である可能性があることはわかっていますが、これを処理するために他の方法を使用するように提案される可能性があるため、ここで質問するのが適切だと思います。