首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dpkg-buildpackage创建空包。

dpkg-buildpackage创建空包。
EN

Stack Overflow用户
提问于 2018-03-14 10:40:16
回答 1查看 1.1K关注 0票数 1

我在debian包装的基础上遇到了麻烦。我正在尝试用一些特定的配置标志来编译qt。这样,我的同事们就可以不用自己重新编译这个软件包了。这个问题与qt无关,它只是我正在构建的项目。

我是如何创建包的:

拿到包裹:

运行这些命令。或者,将tarball内容解压缩到此文件夹以利用预先生成的文件。

代码语言:javascript
复制
wget http://download.qt.io/official_releases/qt/5.10/5.10.0/single/qt-everywhere-src-5.10.0.tar.xz
tar -xf qt-everywhere-src-5.10.0.tar.xz
cd qt-everywhere-src-5.10.0

生成debian构建系统指令:

代码语言:javascript
复制
DEBFULLNAME="My name"
dh_make --email email@company.com                   \
         --file=../qt-everywhere-src-5.10.0.tar.xz  \
         -s                                         \
         --packagename=sim-qt                       \
         --copyright=lgpl

配置debian构建系统说明:

编辑debian/control的以下字段:

代码语言:javascript
复制
Section: devel
Homepage: http://download.qt.io/official_releases/qt/5.10/5.10.0/single/
Description: My Qt build

编辑debian/rules如下所示:

代码语言:javascript
复制
#!/usr/bin/make -f

%:
        dh $@  --with autotools-dev --parallel

override_dh_auto_configure:
        ./configure --prefix=/opt/sim-qt           \
                    --opensource --confirm-license \
                    --skip=qtcharts                \
                    --skip=qtvirtualkeyboard       \
                    --skip=qtdatavis3d             \
                    --skip=qtwebengine             \
                    --silent                       \
                    --nomake=examples              \
                    --nomake=tests

构建包:

代码语言:javascript
复制
sudo dpkg-buildpackage -rfakeroot -nc

我使用-nc,因为编译需要一个多小时。如果不需要的话,我不想重新编译,在过去的几天里,我一直在使用dpkg构建包。

问题所在

包裹是空的!

代码语言:javascript
复制
stew@stewbian:~/src/qt$ dpkg --contents sim-qt_5.10.0-1_amd64.deb
drwxr-xr-x root/root         0 2018-03-14 10:36 ./
drwxr-xr-x root/root         0 2018-03-14 10:36 ./usr/
drwxr-xr-x root/root         0 2018-03-14 10:36 ./usr/share/
drwxr-xr-x root/root         0 2018-03-14 10:36 ./usr/share/doc/
drwxr-xr-x root/root         0 2018-03-14 10:36 ./usr/share/doc/sim-qt/
-rw-r--r-- root/root       188 2018-03-14 10:36 ./usr/share/doc/sim-qt/README.Debian
-rw-r--r-- root/root       188 2018-03-14 10:36 ./usr/share/doc/sim-qt/changelog.Debian.gz
-rw-r--r-- root/root      1440 2018-03-14 10:36 ./usr/share/doc/sim-qt/copyright

而且,包中应该包含的内容似乎安装在我的本地机器上。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-14 11:49:33

这是我在使用QMake构建时遇到的一个问题。

QMake创建的通常的QMake目标使用一个名为INSTALL_ROOT的变量,而不是dpkg所期望的DESTDIR

在构建Qt二进制文件时,我将添加到我的QMake参数中:

代码语言:javascript
复制
QMAKE_ARGS += INSTALL_ROOT=$(DESTDIR) DESTDIR=

如果我不去掉DESTDIR,它就会出于某种原因尝试同时使用INSTALL_ROOTDESTDIR

我还有一个PREFIX定义;我不知道您是否需要这样的定义:

代码语言:javascript
复制
QMAKE_ARGS +=  PREFIX=/usr

最后,有必要告诉Qt不要删除二进制文件(dh_strip会这样做的,如果您想要将符号包与二进制文件一起使用):

代码语言:javascript
复制
QMAKE_ARGS += QMAKE_STRIP=:

然后,在运行QMake时使用这些参数:

代码语言:javascript
复制
$(PROJECT)/Makefile: $(PROJECT)/my_project.pro
    @test -d $(@D) || mkdir -p $(@D) || test -d $(@D)
    $(QMAKE) -o $@ $< $(QMAKE_ARGS)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49275534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档