Development
Development

  1. Required tools.

  2. Double Commander is developed with FreePascal and Lazarus.

    • FreePascal Compiler
    • Current stable version (2.2.4) is used (for releases and nightly builds), although you can also use the development version (2.5.1).

    • Lazarus
    • Double Commander v0.4.5 is developed using latest stable release of Lazarus (currently 0.9.28).
      Double Commander v0.4.6 is developed using always the most recent SVN revision of Lazarus from trunk (currently v0.9.29). A snapshot from here should usually be enough.

  3. Using the IDE to develop and build DC.

  4. If you want to use Lazarus IDE to develop Double Commander, first you have to install a few additional components all of which reside in components directory of DC sources. You must open each .lpk package file (cmdbox.lpk, kascomp.lpk, viewerpackage.lpk) and install it into Lazarus. Choose "No" when asked for rebuilding Lazarus after each package, and only rebuild when you have installed all of them.

    After rebuilding Lazarus open the project file doublecmd.lpi (in directory src).

  5. Building DC from command line.

  6. There are two scripts that you can use to build DC from command line: _make.bat for Windows and _make.sh for Linux. First you need to edit the chosen script file and correct the path to your Lazarus installation (variable lazpath).

    To build DC without using the IDE you need a working lazbuild and lazres utilities (both are a part of Lazarus). Lazbuild should be in Lazarus directory set by <lazpath> and lazres should be in <lazpath>/tools. On Linux you may choose the target widgetset (GTK2 or QT4) by setting $LCL environment variable before executing the script to either gtk2 or qt, for example:

        # LCL=qt ./_make.sh

    Execute the script to start the build process. Make sure you use all parameter if you're building for the first time, so that also components and plugins are built.

  7. Required libraries on Linux.

  8. To build Double Commander on Linux you need to have development versions of a few libraries installed (libxxx-dev packages). If you get linking errors make sure you have all needed libraries. This should be a comprehensive list of dependencies (packages names are from Ubunty 9.04):

    dbus-1-dev
    libatk1.0-dev
    libaudio-dev
    libcairo2-dev
    libdbus-1-dev
    libdbus-glib-1-dev
    libdirectfb-dev
    libexpat1-dev
    libfontconfig1-dev
    libfreetype6-dev
    libglib2.0-dev
    libgtk2.0-dev          (only GTK2)
    libhal-dev
    libice-dev
    libjasper-dev
    libjpeg62-dev
    libncurses5-dev
    libncursesw5-dev
    libpango1.0-dev
    libpcre3-dev
    libphonon-dev
    libpixman-1-dev
    libpng12-dev
    libqt4-dev             (only QT4)
    libselinux1-dev
    libsm-dev
    libsqlite3-dev
    libthai-dev
    libtiff4-dev
    libx11-dev
    libx11-xcb-dev
    libxau-dev
    libxcb1-dev
    libxcb-render0-dev
    libxcb-render-util0-dev
    libxcb-xlib0-dev
    libxcomposite-dev
    libxcursor-dev
    libxdamage-dev
    libxdmcp-dev
    libxext-dev
    libxfixes-dev
    libxi-dev
    libxinerama-dev
    libxrandr-dev
    libxrender-dev
    libxt-dev
    zlib1g-dev

    Additionally for QT4 version you need libqt4intf library, which may be downloaded from FPC Qt4 Binding page.


This project is hosted on SourceForge.net Logo