【发布时间】:2012-02-20 08:53:00
【问题描述】:
通常在您使用的基于 linux 的操作系统上安装软件包
./configure
make
make install
这是如何工作的?以及如何创建可以以这种方式安装的包?
我的应用程序使用 Qt 框架,我想我的目标是像“MyPackage.tar.gz”这样的东西
【问题讨论】:
通常在您使用的基于 linux 的操作系统上安装软件包
./configure
make
make install
这是如何工作的?以及如何创建可以以这种方式安装的包?
我的应用程序使用 Qt 框架,我想我的目标是像“MyPackage.tar.gz”这样的东西
【问题讨论】:
configure 通常是 GNU 构建系统 (autotools) 的一部分,在典型的 Qt 项目中不使用它。 qmake 用于生成构建文件,它在内部处理 configure 为非 qt 项目所做的大部分任务。
Qt 应用程序的典型构建安装过程是
qmake
make
make install
如果您需要相同的命令名称,您可以创建一个调用 qmake 的简单 ./configure 脚本。如果需要,您还可以将 autotools 与 Qt 一起使用,参见例如Qt Creator Instructions For Autotools
【讨论】:
您可以从您的项目中创建一个 debian 软件包。据我了解,您想创建一个用于分发的包,所以我建议从您的项目中创建一个 debian 包。 Here 是 Debian 打包系统的介绍。在文章中,他们有时描述了如何创建一个“规则”文件,该文件是构建过程的核心。以下是我通常用于 Qt/KDE 项目的示例:
#!/usr/bin/make -f
#export DH_VERBOSE=1
# This is the debhelper compatability version to use.
#export DH_COMPAT=3
DESTDIR=$(CURDIR)/debian/project
TR_DIR=$(CURDIR)/debian/project/usr/share/qt4/translations
configure:
qmake project.pro
clean:
dh_testdir
dh_testroot
dh_clean
build: configure
dh_testdir
lrelease translations/project_en.ts
$(MAKE)
install: build
mkdir -p $(TR_DIR)
cp translations/project_en.qm $(TR_DIR)
$(MAKE) INSTALL_ROOT=$(CURDIR)/debian/project install
dh_installdirs
binary-arch: build install
dh_testdir
dh_testroot
dh_installmenu
dh_link
dh_strip
dh_compress
dh_fixperms
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
这对于小型项目通常就足够了。
【讨论】:
Qt 经常与 CMake 一起使用,我强烈推荐。值得注意的一点是它喜欢源外构建。
您的配置脚本可能是
#!/bin/bash
(mkdir build; cd build; ccmake ..)
makefile 可以是
#!/bin/bash
(cd build; make)
【讨论】:
较新版本的 debhelper 支持 qmake。一个 rules 文件,例如,
#!/usr/bin/make -f
%:
dh $@ --buildsystem=qmake
仅此而已。你需要,
bar.file = foo
bar.path = install/dir
INSTALLS += bar
在您的项目“pro”或 qmake 文件中。 qmake 将创建安装目标,perl 文件 /usr/share/perl5/Debian/Debhelper/Buildsystem/qmake.pm 将被调用并解析 qmake 文件。您需要创建 'debian/' 文件、changelog、compat、control、copyright 以及 规则文件。
【讨论】: