zoukankan      html  css  js  c++  java
  • Packaging a Qt application

    Packaging a Qt application - maemo.org wiki

        Packaging a Qt application

        Main article: Packaging



        Packaging a Qt application for Maemo is very similar to packaging any other application, so this document only contains information on Qt-specific packaging issues.

            1 Creating a Maemo package from a qmake project
            2 Editing the rules file
            3 Editing the control file
            4 Example
            5 Useful Links


        [edit] Creating a Maemo package from a qmake project

        In order to create a new package for Maemo, from a qmake project, you will need to:

            Rename the source directory to Package-Version (for example myapp-0.1 for an application ‘myapp’ with a version of ‘0.1’)
            Create a ‘src’ directory in Package-Version/
            Copy all the files to the src/ directory
            Rename src/appname.pro to src/src.pro

        Please make sure that the directory name is <package-version> format and in small case letters.

        $mv myapp myapp-0.1
        $cd myapp-0.1
        $mkdir src
        $cp * src
        $mv src/appname.pro src/src.pro

        Append the following chunk to end of your src/src.pro. The chunk adds an install section to your qmakefile

        unix {
          #VARIABLES
          isEmpty(PREFIX) {
            PREFIX = /usr
          }
          BINDIR = $PREFIX/bin
          DATADIR =$PREFIX/share

          DEFINES += DATADIR=\\\"$DATADIR\\\" PKGDATADIR=\\\"$PKGDATADIR\\\"

          #MAKE INSTALL

          INSTALLS += target desktop service iconxpm icon26 icon48 icon64

          target.path =$BINDIR

          desktop.path = $DATADIR/applications/hildon
          desktop.files += ${TARGET}.desktop

          service.path = $DATADIR/dbus-1/services
          service.files += ${TARGET}.service

          icon64.path = $DATADIR/icons/hicolor/64x64/apps
          icon64.files += ../data/64x64/${TARGET}.png
        }

            Create a myapp-0.1/myapp.pro file like this:

        QMAKEVERSION = $[QMAKE_VERSION]
        ISQT4 = $find(QMAKEVERSION, ^[2-9])
        isEmpty( ISQT4 ) {
        error("Use the qmake include with Qt4.4 or greater, on Debian that is qmake-qt4");
        }

        TEMPLATE = subdirs
        SUBDIRS  = src

            Run dh_make to debianize the source archive, it creates:

                An archive with the unchanged upstream source (orig.tar.gz)
                Some basic files in the debian directory
                Some example files (*.EX *.ex)

        export DEBFULLNAME="maintainer first name and last name"
        dh_make --createorig --single -e maintainer@email.org -c gpl

        [edit] Editing the rules file

        The rules file generated by dh_make, found in debian/rules will be modified in order to look like this one. We are using qmake, so there is no configure script to run. If you copy and paste the following file, notice the empty space at the beginning of the lines these are TAB characters, they are not multiple space characters. If you copy and paste the following chunk, you most propably get space's instead of tabs if this is true then the file will not work.

        #!/usr/bin/make -f
        APPNAME := my_app_name
        builddir:
                mkdir -p builddir

        builddir/Makefile: builddir
                cd builddir && qmake-qt4 PREFIX=/usr ../$(APPNAME).pro

        build: build-stamp

        build-stamp: builddir/Makefile
                dh_testdir
                # Add here commands to compile the package.
                cd builddir && $(MAKE)
                touch $@

        clean:
                dh_testdir
                dh_testroot
                rm -f build-stamp
                # Add here commands to clean up after the build process.
                rm -rf builddir
                dh_clean
        install: build
                dh_testdir
                dh_testroot
                dh_clean -k
                dh_installdirs

                # Add here commands to install the package into debian/your_appname
                cd builddir && $(MAKE) INSTALL_ROOT=$(CURDIR)/debian/$(APPNAME) install
        # Build architecture-independent files here.
        binary-indep: build install
        # We have nothing to do by default.

        # Build architecture-dependent files here.
        binary-arch: build install
                dh_testdir
                dh_testroot
                dh_installdocs
                dh_installexamples
                dh_installman
                dh_link
                dh_strip --dbg-package=my-application-dbg
                dh_compress
                dh_fixperms
                dh_installdeb
                dh_shlibdeps
                dh_gencontrol
                dh_md5sums
                dh_builddeb

        binary: binary-indep binary-arch
        .PHONY: build clean binary-indep binary-arch binary install configure

        [edit] Editing the control file

        The control file generated by dh_make, found in debian/control will be modified substantially. Please refer to the general packaging guide for Maemo for details.

        For Qt applications you need to make sure to add libqt4-dev as an additional entry in the field Build-Depends.

        [edit] Example

        You can download the source package of qt-maemo-example from the extras-devel repository as follows, if you have source packages enabled in your /etc/apt/sources.list file:

        apt-get source qt-maemo-example

        This command will download the:

            unmodified source (.orig.tar.gz)
            debian dsc file (.dsc)
            diff file (.diff)

        and will then automatically launch dpkg -x file.dsc in order to decompress the orig.tar.gz and apply the changes.

        [edit] Useful Links

            Packaging Qt Creator Apps for Maemo Extras
            Qt for Maemo
            Packaging guide for Maemo
            Deploying your Maemo 5 Qt application Qt documentation


  • 相关阅读:
    转载: 如何让form表单在enter键入时不提交
    26个Jquery使用小技巧
    PHP网站页面静态化的生成方法介绍
    用jquery绑定输入框正在输入时返回操作
    PHP开发规范手册之PHP代码规范详解
    Web开发中9个有用的提示和技巧
    TSINGSEE青犀视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
    应急消防通道总是被占用?安防告警视频平台越加必要
    新冠疫情涨涨落落,企业做好线上办公该如何转型?
    【解决方案】如何实现AI自动识别高空抛物行为?
  • 原文地址:https://www.cnblogs.com/lexus/p/2464697.html
Copyright © 2011-2022 走看看