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 [email protected] -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


你可能感兴趣的:(application)