Browse Source

Added doxygen CMake groups and inserted #! in CMake files.

Sascha Zelzer 14 years ago
parent
commit
02ed5714f2

+ 1 - 0
CMake/ctkFunctionApplyPatches.cmake

@@ -23,6 +23,7 @@
 #  CTK/CMake/ctkFunctionLFtoCRLF.cmake
 #
 
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionApplyPatches PATCH_EXE SRC_DIR PATCH_FILES)
   
   # Make sure patch executable exists

+ 6 - 5
CMake/ctkFunctionCMakeDoxygenFilterCompile.cmake

@@ -1,11 +1,11 @@
 #!
 #! \brief Compile a CMake doxygen input filter
 #!
-#! \param OUT <out-file> (optional) Supply an absolute filename for
-#!                       the generated executable.
-#! \param NAMESPACE <namespace> (optional) Supply a C++ namespace in
-#!                              which the generated function declrarations
-#!                              should be wrapped.
+#! \param OUT &lt;out-file&gt; (optional) Supply an absolute filename for
+#!                             the generated executable.
+#! \param NAMESPACE &lt;namespace&gt; (optional) Supply a C++ namespace in
+#!                                    which the generated function declrarations
+      #!                              should be wrapped.
 #!
 #! \return This function sets the <code>CMakeDoxygenFilter_EXECUTABLE</code>
 #!         variable to the absolute path of the generated input filter executable
@@ -15,6 +15,7 @@
 #! project into a doxygen input filter executable. See
 #! http://github.com/saschazelzer/CMakeDoxygenFilter/blob/master/README for more details.
 #!
+#! \ingroup CMakeUtilities
 function(ctkFunctionCMakeDoxygenFilterCompile)
 
   #-------------------- parse function arguments -------------------

+ 1 - 0
CMake/ctkFunctionCheckCompilerFlags.cmake

@@ -26,6 +26,7 @@
 
 INCLUDE(TestCXXAcceptsFlag)
 
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionCheckCompilerFlags CXX_FLAG_TO_TEST RESULT_VAR)
   
   IF(CXX_FLAG_TO_TEST STREQUAL "")

+ 16 - 13
CMake/ctkFunctionDownloadData.cmake

@@ -19,19 +19,22 @@
 ###########################################################################
 
 
-# 
-# Fetch data from a MIDAS server
-#
-# Usage:
-#  ctkFunctionDownloadData(
-#         MIDAS_SERVER_URL http://www.insight-journal.org/midas/item/download/
-#         ITEMID 2461
-#         OUTPUT_DIRECTORY /home/jchris/Projects/Data
-#         [FORCE_DOWNLOAD]
-#         )
-#
-# The downloaded file will have the from: midas_item_<ITEMID>.tar
-#
+#!
+#! Fetch data from a MIDAS server
+#!
+#! Usage:
+#! \code
+#!  ctkFunctionDownloadData(
+#!         MIDAS_SERVER_URL http://www.insight-journal.org/midas/item/download/
+#!         ITEMID 2461
+#!         OUTPUT_DIRECTORY /home/jchris/Projects/Data
+#!         [FORCE_DOWNLOAD]
+#!         )
+#! \endcode
+#!
+#! The downloaded file will have the from: midas_item_<ITEMID>.tar
+#!
+#! \ingroup CMakeUtilities
 FUNCTION( ctkFunctionDownloadData)
   ctkMacroParseArguments(MY
     "MIDAS_SERVER_URL;ITEMID;OUTPUT_DIRECTORY"

+ 1 - 0
CMake/ctkFunctionExtractOptionNameAndValue.cmake

@@ -3,6 +3,7 @@
 #
 #
 
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionExtractOptionNameAndValue my_opt var_opt_name var_opt_value)
 
  # Make sure option is correctly formated

+ 4 - 3
CMake/ctkFunctionGenerateDGraphInput.cmake

@@ -18,9 +18,10 @@
 #
 ###########################################################################
 
-#
-# Generate a DGrapgh input file expected by DGraph executable.
-#
+#!
+#! Generate a DGrapgh input file expected by DGraph executable.
+#!
+#! \ingroup CMakeAPI
 FUNCTION(ctkFunctionGenerateDGraphInput dir target_directories)
   IF(NOT EXISTS ${dir})
     MESSAGE(FATAL_ERROR "Directory ${dir} doesn't exist!")

+ 1 - 0
CMake/ctkFunctionGeneratePluginManifest.cmake

@@ -3,6 +3,7 @@
 #  CTK/CMake/ctkMacroParseArguments.cmake
 #
 
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionGeneratePluginManifest QRC_SRCS)
 
   CtkMacroParseArguments(MY

+ 2 - 1
CMake/ctkFunctionGeneratePluginUseFile.cmake

@@ -19,7 +19,8 @@
 #
 ###########################################################################
 
-# Write a set of variables containing CTK plugin specific include and library directories
+#! Write a set of variables containing CTK plugin specific include and library directories
+#! \ingroup CMakeAPI
 FUNCTION(ctkFunctionGeneratePluginUseFile filename)
   IF(COMMAND GetMyTargetLibraries)
     GetMyTargetLibraries("${CTK_PLUGIN_LIBRARIES}" my_ctk_plugin_libraries)

+ 1 - 0
CMake/ctkFunctionGenerateProjectXml.cmake

@@ -22,6 +22,7 @@
 #
 #
 
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionGenerateProjectXml dir name target_directories is_superbuild)
   IF(NOT EXISTS ${dir})
     MESSAGE(FATAL_ERROR "Directory ${dir} doesn't exist!")

+ 1 - 0
CMake/ctkFunctionGetGccVersion.cmake

@@ -18,6 +18,7 @@
 #
 ###########################################################################
 
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionGetGccVersion path_to_gcc output_var)
   IF(CMAKE_COMPILER_IS_GNUCXX)
     EXECUTE_PROCESS(

+ 1 - 0
CMake/ctkFunctionGetIncludeDirs.cmake

@@ -19,6 +19,7 @@
 #
 ###########################################################################
 
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionGetIncludeDirs var_include_dirs)
 
   IF(NOT ARGN)

+ 1 - 0
CMake/ctkFunctionGetLibraryDirs.cmake

@@ -19,6 +19,7 @@
 #
 ###########################################################################
 
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionGetLibraryDirs var_library_dirs)
 
   IF(NOT ARGN)

+ 2 - 4
CMake/ctkFunctionLFtoCRLF.cmake

@@ -18,9 +18,7 @@
 #
 ###########################################################################
 
-#
-#
-#
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionLFtoCRLF input_file output_file)
   # Make sure the file exists
   IF(NOT EXISTS ${input_file})
@@ -61,4 +59,4 @@ IF(FUNCTION_TESTING)
   #MESSAGE(STATUS "OUTPUT_FILE [${OUTPUT_FILE}]")
   
   ctkFunctionLFtoCRLF("${INPUT_FILE}" "${OUTPUT_FILE}")
-ENDIF()
+ENDIF()

+ 1 - 4
CMake/ctkMacroAddCtkLibraryOptions.cmake

@@ -18,10 +18,7 @@
 #
 ###########################################################################
 
-#
-#
-#
-  
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroAddCtkLibraryOptions lib)
 
   SET(filepath ${CMAKE_CURRENT_SOURCE_DIR}/Libs/${lib}/ctk_library_options.cmake)

+ 1 - 0
CMake/ctkMacroBuildApp.cmake

@@ -23,6 +23,7 @@
 #  CTK/CMake/ctkMacroParseArguments.cmake
 #
 
+#! \ingroup CMakeAPI
 MACRO(ctkMacroBuildApp)
   ctkMacroParseArguments(MY
     "NAME;SRCS;MOC_SRCS;UI_FORMS;INCLUDE_DIRECTORIES;TARGET_LIBRARIES;RESOURCES"

+ 1 - 0
CMake/ctkMacroBuildLib.cmake

@@ -23,6 +23,7 @@
 #  CTK/CMake/ctkMacroParseArguments.cmake
 #
 
+#! \ingroup CMakeAPI
 MACRO(ctkMacroBuildLib)
   ctkMacroParseArguments(MY
     "NAME;EXPORT_DIRECTIVE;SRCS;MOC_SRCS;UI_FORMS;INCLUDE_DIRECTORIES;TARGET_LIBRARIES;RESOURCES;LIBRARY_TYPE"

+ 23 - 22
CMake/ctkMacroBuildPlugin.cmake

@@ -23,28 +23,29 @@
 #  CTK/CMake/ctkMacroParseArguments.cmake
 #  CTK/CMake/ctkMacroGeneratePluginManifest.cmake
 #
-# This macro takes the usual arguments for building
-# a shared library using Qt. Additionally, it generates
-# plugin meta-data by creating a MANIFEST.MF text file
-# which is embedded in the share library as a Qt resource.
-#
-# The following variables can be set in a file named
-# manifest_headers.cmake, which will then be read by
-# this macro:
-#
-# Plugin-ActivationPolicy
-# Plugin-Category
-# Plugin-ContactAddress
-# Plugin-Copyright
-# Plugin-Description
-# Plugin-DocURL
-# Plugin-Icon
-# Plugin-License
-# Plugin-Name
-# Require-Plugin
-# Plugin-Vendor
-# Plugin-Version
-#
+#! This macro takes the usual arguments for building
+#! a shared library using Qt. Additionally, it generates
+#! plugin meta-data by creating a MANIFEST.MF text file
+#! which is embedded in the share library as a Qt resource.
+#!
+#! The following variables can be set in a file named
+#! manifest_headers.cmake, which will then be read by
+#! this macro:
+#!
+#! - Plugin-ActivationPolicy
+#! - Plugin-Category
+#! - Plugin-ContactAddress
+#! - Plugin-Copyright
+#! - Plugin-Description
+#! - Plugin-DocURL
+#! - Plugin-Icon
+#! - Plugin-License
+#! - Plugin-Name
+#! - Require-Plugin
+#! - Plugin-Vendor
+#! - Plugin-Version
+#!
+#! \ingroup CMakeAPI
 MACRO(ctkMacroBuildPlugin)
   CtkMacroParseArguments(MY
     "EXPORT_DIRECTIVE;SRCS;MOC_SRCS;UI_FORMS;INCLUDE_DIRECTORIES;TARGET_LIBRARIES;RESOURCES;CACHED_RESOURCEFILES;TRANSLATIONS"

+ 1 - 0
CMake/ctkMacroBuildQtDesignerPlugin.cmake

@@ -23,6 +23,7 @@
 #  CTK/CMake/ctkMacroParseArguments.cmake
 #
 
+#! \ingroup CMakeAPI
 MACRO(ctkMacroBuildQtDesignerPlugin)
   CtkMacroParseArguments(MY
     "NAME;EXPORT_DIRECTIVE;SRCS;MOC_SRCS;UI_FORMS;INCLUDE_DIRECTORIES;TARGET_LIBRARIES;RESOURCES;LIBRARY_TYPE"

+ 1 - 0
CMake/ctkMacroCompilePythonScript.cmake

@@ -7,6 +7,7 @@
 
 INCLUDE(${CTK_CMAKE_DIR}/ctkMacroParseArguments.cmake)
 
+#! \ingroup CMakeAPI
 MACRO(ctkMacroCompilePythonScript)
   ctkMacroParseArguments(MY
     "TARGET_NAME;SCRIPTS;RESOURCES;SOURCE_DIR;DESTINATION_DIR;INSTALL_DIR"

+ 6 - 5
CMake/ctkMacroEmptyExternalProject.cmake

@@ -18,11 +18,12 @@
 #
 ###########################################################################
 
-#
-# Convenient macro allowing to define a "empty" project in case an external one is provided
-# using for example <proj>_DIR. 
-# Doing so allows to keep the external project dependency system happy.
-#
+#!
+#! Convenient macro allowing to define a "empty" project in case an external one is provided
+#! using for example <proj>_DIR.
+#! Doing so allows to keep the external project dependency system happy.
+#!
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroEmptyExternalProject proj dependencies)
 
   ExternalProject_Add(${proj}

+ 1 - 0
CMake/ctkMacroGeneratePluginResourceFile.cmake

@@ -3,6 +3,7 @@
 #  CTK/CMake/ctkMacroParseArguments.cmake
 #
 
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroGeneratePluginResourceFile QRC_SRCS)
 
   CtkMacroParseArguments(MY

+ 18 - 12
CMake/ctkMacroListFilter.cmake

@@ -1,16 +1,22 @@
 
-# See http://www.cmake.org/Wiki/CMakeMacroListOperations#LIST_FILTER
-
-# LIST_FILTER(<list> <regexp_var> [<regexp_var> ...]
-#              [OUTPUT_VARIABLE <variable>])
-# Removes items from <list> which do not match any of the specified
-# regular expressions. An optional argument OUTPUT_VARIABLE
-# specifies a variable in which to store the matched items instead of
-# updating <list>
-# As regular expressions can not be given to macros (see bug #5389), we pass
-# variable names whose content is the regular expressions.
-# Note that this macro requires PARSE_ARGUMENTS macro, available here:
-# http://www.cmake.org/Wiki/CMakeMacroParseArguments
+#! See http://www.cmake.org/Wiki/CMakeMacroListOperations#LIST_FILTER
+#!
+#! Usage:
+#! \code
+#! LIST_FILTER(<list> <regexp_var> [<regexp_var> ...]
+#!              [OUTPUT_VARIABLE <variable>])
+#! \endcode
+#!
+#! Removes items from <list> which do not match any of the specified
+#! regular expressions. An optional argument OUTPUT_VARIABLE
+#! specifies a variable in which to store the matched items instead of
+#! updating <list>
+#! As regular expressions can not be given to macros (see bug #5389), we pass
+#! variable names whose content is the regular expressions.
+#! Note that this macro requires PARSE_ARGUMENTS macro, available here:
+#! http://www.cmake.org/Wiki/CMakeMacroParseArguments
+#!
+#! \ingroup CMakeUtilities
 MACRO(CtkMacroListFilter)
   ctkMacroParseArguments(LIST_FILTER "OUTPUT_VARIABLE" "" ${ARGV})
   # Check arguments.

+ 4 - 3
CMake/ctkMacroParseArguments.cmake

@@ -1,7 +1,8 @@
 
-#
-# See http://www.cmake.org/Wiki/CMakeMacroParseArguments
-#
+#!
+#! See http://www.cmake.org/Wiki/CMakeMacroParseArguments
+#!
+#! \ingroup CMakeUtilities
 MACRO(CtkMacroParseArguments prefix arg_names option_names)
   SET(DEFAULT_ARGS)
   FOREACH(arg_name ${arg_names})

+ 5 - 5
CMake/ctkMacroSetPaths.cmake

@@ -18,11 +18,11 @@
 #
 ###########################################################################
 
-#
-# Depending on the platform, either PATH, LD_LIBRARY_PATH or DYLD_LIBRARY_PATH
-# will be updated using the paths specified using PATH_LIST
-#
-
+#!
+#! Depending on the platform, either PATH, LD_LIBRARY_PATH or DYLD_LIBRARY_PATH
+#! will be updated using the paths specified using PATH_LIST
+#!
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroSetPaths PATH_LIST)
   FOREACH(p ${PATH_LIST})
     IF(WIN32)

+ 1 - 0
CMake/ctkMacroSetupExternalPlugins.cmake

@@ -19,6 +19,7 @@
 #
 ###########################################################################
 
+#! \ingroup CMakeAPI
 MACRO(ctkMacroSetupExternalPlugins )
 
   ctkMacroParseArguments(MY "BUILD_OPTION_PREFIX" "" ${ARGN})

+ 1 - 4
CMake/ctkMacroSetupQt.cmake

@@ -18,10 +18,7 @@
 #
 ###########################################################################
 
-#
-#
-#
-
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroSetupQt)
 
   SET(minimum_required_qt_version "4.6")

+ 20 - 23
CMake/ctkMacroTargetLibraries.cmake

@@ -18,14 +18,15 @@
 #
 ###########################################################################
 
-#
-# This macro could be invoked using two different signatures:
-#   ctkFunctionGetTargetLibraries(TARGET_LIBS)
-# or 
-#   ctkFunctionGetTargetLibraries(TARGET_LIBS "/path/to/ctk_target_dir")
-#
-# Without specifying the second argument, the current folder will be used.
-#
+#!
+#! This macro could be invoked using two different signatures:
+#!   ctkFunctionGetTargetLibraries(TARGET_LIBS)
+#! or
+#!   ctkFunctionGetTargetLibraries(TARGET_LIBS "/path/to/ctk_target_dir")
+#!
+#! Without specifying the second argument, the current folder will be used.
+#!
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionGetTargetLibraries varname)
 
   SET(expanded_target_library_list)
@@ -93,9 +94,7 @@ FUNCTION(ctkFunctionGetTargetLibraries varname)
 
 ENDFUNCTION()
 
-#
-#
-#
+#! \ingroup CMakeUtilities
 FUNCTION(ctkFunctionCollectTargetLibraryNames target_dir varname)
 
   SET(target_library_list)
@@ -152,9 +151,7 @@ FUNCTION(ctkFunctionCollectTargetLibraryNames target_dir varname)
   SET(${varname} ${target_library_list} PARENT_SCOPE)
 ENDFUNCTION()
 
-#
-#
-#
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroCollectAllTargetLibraries targets subdir varname)
 
   SET(option_prefix)
@@ -194,9 +191,10 @@ MACRO(ctkMacroCollectAllTargetLibraries targets subdir varname)
   
 ENDMACRO()
 
-#
-# Extract all library names starting with CTK uppercase or org_commontk_
-#
+#!
+#! Extract all library names starting with CTK uppercase or org_commontk_
+#!
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroGetAllCTKTargetLibraries all_target_libraries varname)
   SET(re_ctklib "^(c|C)(t|T)(k|K)[a-zA-Z0-9]+$")
   SET(re_ctkplugin "^org_commontk_[a-zA-Z0-9_]+$")
@@ -208,9 +206,10 @@ MACRO(ctkMacroGetAllCTKTargetLibraries all_target_libraries varname)
   #MESSAGE(STATUS varname:${varname}:${${varname}})
 ENDMACRO()
 
-#
-# Extract all library names *NOT* starting with CTK uppercase or org_commontk_
-#
+#!
+#! Extract all library names *NOT* starting with CTK uppercase or org_commontk_
+#!
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroGetAllNonCTKTargetLibraries all_target_libraries varname)
   ctkMacroGetAllCTKTargetLibraries("${all_target_libraries}" all_ctk_libraries)
   SET(_tmp_list ${all_target_libraries})
@@ -221,9 +220,7 @@ MACRO(ctkMacroGetAllNonCTKTargetLibraries all_target_libraries varname)
   #MESSAGE(STATUS varname:${varname}:${${varname}})
 ENDMACRO()
 
-#
-# 
-#
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroShouldAddExternalProject libraries_variable_name resultvar)
   IF(NOT DEFINED NON_CTK_DEPENDENCIES)
     MESSAGE(FATAL_ERROR "Variable NON_CTK_DEPENDENCIES is undefined !")

+ 2 - 6
CMake/ctkMacroValidateBuildOptions.cmake

@@ -18,9 +18,7 @@
 #
 ###########################################################################
 
-#
-#
-#
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroGetOptionName target_directories_with_target_name target_name option_name_var)
   
   FOREACH(target_info ${target_directories_with_target_name})
@@ -37,9 +35,7 @@ MACRO(ctkMacroGetOptionName target_directories_with_target_name target_name opti
   ENDFOREACH()
 ENDMACRO()
 
-#
-#
-#
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroValidateBuildOptions dir executable target_directories)
   IF(NOT EXISTS ${dir})
     MESSAGE(FATAL_ERROR "Directory ${dir} doesn't exist!")

+ 36 - 33
CMake/ctkMacroWrapPythonQt.cmake

@@ -22,40 +22,41 @@
 # ctkMacroWrapPythonQt
 #
 
-#
-# Depends on:
-#  PythonQt 
-#  PythonQtGenerator (Only if IS_WRAP_FULL is TRUE)
-#  PythonInterp (See function reSearchFile)
-#
+#!
+#! Depends on:
+#!  PythonQt
+#!  PythonQtGenerator (Only if IS_WRAP_FULL is TRUE)
+#!  PythonInterp (See function reSearchFile)
+#!
 
-#
-# The different parameters are:
-#
-#    WRAPPING_NAMESPACE: Namespace that should contain the library. For example: org.commontk
-#         
-#    TARGET ...........: Name of the wrapped library. For example: CTKWidget
-# 
-#    SRCS_LIST_NAME ...: Name of the variable that should contain the generated wrapper source.
-#                        For example: KIT_PYTHONQT_SRCS
-#
-#    SOURCES ..........: List of source files that should be wrapped.
-#
-#    IS_WRAP_FULL .....: Indicate if a Full wrapping if desired.
-#
+#!
+#! The different parameters are:
+#!
+#!    WRAPPING_NAMESPACE: Namespace that should contain the library. For example: org.commontk
+#!
+#!    TARGET ...........: Name of the wrapped library. For example: CTKWidget
+#!
+#!    SRCS_LIST_NAME ...: Name of the variable that should contain the generated wrapper source.
+#!                        For example: KIT_PYTHONQT_SRCS
+#!
+#!    SOURCES ..........: List of source files that should be wrapped.
+#!
+#!    IS_WRAP_FULL .....: Indicate if a Full wrapping if desired.
+#!
 
-#
-# LOG FILE:
-#   File ctkMacroWrapPythonQt_log.txt will be created in the current directory. 
-#   It will contain the list of file and the reason why a given class hasn't been wrapped.
-#
+#!
+#! LOG FILE:
+#!   File ctkMacroWrapPythonQt_log.txt will be created in the current directory.
+#!   It will contain the list of file and the reason why a given class hasn't been wrapped.
+#!
 
 set(verbose 0)
 
-#
-# Convenient function allowing to log the reason why a given class hasn't been wrapped
-# If verbose=1, it will also be displayed on the standard output
-#
+#!
+#! Convenient function allowing to log the reason why a given class hasn't been wrapped
+#! If verbose=1, it will also be displayed on the standard output
+#!
+#! \ingroup CMakeUtilities
 FUNCTION(ctkMacroWrapPythonQt_log msg)
   IF(verbose)
     MESSAGE(${msg})
@@ -65,10 +66,11 @@ ENDFUNCTION()
 
 INCLUDE(${CTK_CMAKE_DIR}/ctkMacroSetPaths.cmake)
 
-#
-# Convenient function allowing to invoke re.search(regex, string) using the given interpreter.
-# Note that is_matching will be set to True if there is a match
-#
+#!
+#! Convenient function allowing to invoke re.search(regex, string) using the given interpreter.
+#! Note that is_matching will be set to True if there is a match
+#!
+#! \ingroup CMakeUtilities
 FUNCTION(ctkMacroWrapPythonQt_reSearchFile python_exe python_library_path regex file is_matching)
 
   set(python_cmd "import re
@@ -94,6 +96,7 @@ else: print 'TRUE'
   SET(is_matching ${output} PARENT_SCOPE)
 ENDFUNCTION()
 
+#! \ingroup CMakeUtilities
 MACRO(ctkMacroWrapPythonQt WRAPPING_NAMESPACE TARGET SRCS_LIST_NAME SOURCES IS_WRAP_FULL)
   
   # Sanity check

+ 25 - 0
Documentation/CMakeBuildSystem.dox

@@ -0,0 +1,25 @@
+/*! \namespace CMake
+    \brief A pseudo-namespace used to group CMake macros and functions.
+
+    This is not a regular C++ namespace. It is juse used to group the CMake
+    macros and function of the CTK build system.
+*/
+
+/*! \page BuildSystem The CTK Build System
+
+  The CTK build system is based on CMake. A more detailed description of the
+  build system itself can be found on the corresponding
+  <a href="http://www.commontk.org/index.php/Documentation/BuildSystem_Description">wiki page</a>.
+
+  \defgroup CMakeMacrosAndFuncs CMake Macros & Functions
+  This module groups all CMake macros and functions available in the CTK build system.
+
+  \defgroup CMakeUtilities CMake Utilities
+  \ingroup CMakeMacrosAndFuncs
+  This module contains CMake utility macros and functions.
+  These macros and functions are usually not used directly by regular CTK developers.
+
+  \defgroup CMakeAPI CMake API
+  \ingroup CMakeMacrosAndFuncs
+  This module contains CMake macros and functions which can be used by CTK developers.
+*/