| Development |
Development
Double Commander is developed with FreePascal and Lazarus. 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. 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). 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. 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. |