Chapter 4.  CMake and Build Tools For Geant4 Developers

Geant4 developers can make use of several powerful features of CMake to help with their work. The key concept and working practice is the separation of the source directory, which is where the sources you edit reside, and the build directory, where the buildscripts and compiled products reside. The reason for enforcing this separation is twofold:

4.1.  Developing Geant4 using Make, Xcode, Visual Studio and Eclipse

CMake is a buildsystem generator that can create scripts for many buildsystems including Make, Xcode, Visual Studio and Eclipse, among others. To find out which systems your install of CMake can generate scripts for, consult the "GENERATORS" section of the CMake man page, or click on the "Generate" button in the CMake GUI. The resulting scripts can be used within the buildsystem of choice to perform the actual build, install and packaging.

Whilst we only support Make and Visual Studio for Unix and Windows user builds respectively, Geant4 developers are welcome, and encouraged, to use their buildsystem of choice. Scripts for developing Geant4 using these systems can be generated by choosing the CMake generator when running CMake for the first time.

On the command line, one can select the tool using the -G argument of CMake. For example, to generate an Xcode project for Geant4 using the example from Section 2.1:

    $ mkdir -p /path/to/geant4.10.0-build-xcode
    $ cd /path/to/geant4.10.0-build-xcode
    $ cmake -G Xcode -DCMAKE_INSTALL_PREFIX=/path/to/geant4.10.0-install /path/to/geant4.10.0
  

The resulting /path/to/geant4.10.0-build-xcode/Geant4.xcodeproj project may be opened with Xcode.

In the CMake GUI, the generator will be asked for the first time you click on Configure button (see Section 2.2), where it can be selected from a drop down list.

Note that in all cases, you can only have one buildtool configuration in a given build directory (e.g. you cannot have Unix Makefiles alongside an Xcode project).

Support for these buildtools is still preliminary, so feedback is welcome, whether bug reports, guides or general comments.

4.1.1.  Using the Eclipse IDE

Eclipse projects using Makefiles can be generated via the command:

      $ cmake -G"Eclipse CDT4 - <TYPE> Makefiles" <otherargs>
    

where <TYPE> is platform dependent and one of Unix, MinGW or NMake. Note that only a single build mode is supported here because the projects are Makefile based. This means that you will need to supply CMake with the command line argument -DCMAKE_BUILD_TYPE=<MODE>, where <MODE>, is the required mode if you want to change the default mode. By default, Geant4 is built in "Release" mode.

With out-of-source builds enforced in Geant4, there are two issues that need to be worked around due to the way Eclipse expects project directories to be organised. These are to do with the integration of version control support and code editing/navigation/autocompletion. Both issues, together with their resolution are described in the CMake Wiki entry on Eclipse CDT4 under the "Out-ofSource Builds" section.