我正在尝试建立我的第一个库。
库应该安装在不同的架构中。为 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 问题,但我认为这是提出问题的正确地方,因为可能会建议我使用其他方法来处理这个问题。