Difference between revisions of "CMake"
(Add guide to configuration variables.) |
(→GnuCash Configuration Variables: update to 3.1) |
||
Line 33: | Line 33: | ||
| WITH_SQL || Build this project with SQL (libdbi) support || ON | | WITH_SQL || Build this project with SQL (libdbi) support || ON | ||
|- | |- | ||
− | | WITH_AQBANKING || Build this project with aqbanking (online banking) support || | + | | WITH_AQBANKING || Build this project with aqbanking (online banking) support || ON |
|- | |- | ||
− | | WITH_GNUCASH || Build all of GnuCash, not just | + | | WITH_GNUCASH || Build all of GnuCash, not just the library || ON |
|- | |- | ||
− | | WITH_CUTECASH || Also build cutecash || | + | | WITH_CUTECASH || Also build cutecash || Removed in 3.x |
|- | |- | ||
| WITH_OFX || Compile with ofx support (needs LibOFX)|| ON | | WITH_OFX || Compile with ofx support (needs LibOFX)|| ON | ||
Line 44: | Line 44: | ||
|- | |- | ||
| ENABLE_BINRELOC || Compile with binary relocation support || ON | | ENABLE_BINRELOC || Compile with binary relocation support || ON | ||
− | |||
− | |||
|- | |- | ||
| ENABLE_REGISTER2 || Compile with register2 enabled || OFF | | ENABLE_REGISTER2 || Compile with register2 enabled || OFF | ||
Line 56: | Line 54: | ||
|- | |- | ||
| DISABLE_DEPRECATED_GNOME || Don't use deprecated gnome functions || OFF | | DISABLE_DEPRECATED_GNOME || Don't use deprecated gnome functions || OFF | ||
+ | |- | ||
+ | | ALLOW_OLD_GETTEXT || allow to configure build with a gettext version older than 0.19.6. Some files will not be translated! || OFF | ||
+ | |- | ||
+ | | ENABLE_DEBUG || Compile with debugging flags set || (implicit) OFF | ||
|- | |- | ||
|} | |} | ||
− | To change from a default define the option on the cmake command line, e.g. <tt>- | + | To change from a default define the option on the cmake command line, e.g. <tt>-DWITH_PYTHON=ON</tt>. |
Other CMake variables you may need to define: | Other CMake variables you may need to define: | ||
* CMAKE_INSTALL_PREFIX: The target installation directory, defaults to <tt>/usr/local</tt>. | * CMAKE_INSTALL_PREFIX: The target installation directory, defaults to <tt>/usr/local</tt>. |
Revision as of 20:22, 7 May 2018
CMake is a build system which replaces automake/autoconf (the "autotools") and the shell scripts which were produced by the autotools. Similar to the autotools, the actual build on Linux is done through Makefiles. CMake supports Linux, Windows/mingw, Windows/MSVC and other platforms.
- http://www.cmake.org/Wiki/CMake_FAQ FAQ
- http://www.cmake.org/HTML/Download.html - Download
- http://www.cmake.org/HTML/Documentation.html - The same page which you also get by "man cmake".
- http://websvn.kde.org/trunk/KDE/kdelibs/cmake/modules/ - Potentially helpful additional macros
- A blog post about handling dependencies and targets for custom build commands.
- LLVM's CMake Primer, a more programmer-oriented tutorial than the one in the CMake documentation.
Contents
- 1 Building
- 2 GnuCash Configuration Variables
- 3 FAQ
- 3.1 How can you change between a Debug and Release build
- 3.2 How can I see the actual compiler commands: Verbose mode?
- 3.3 Which variables are set in CMake when running CMakeLists.txt?
- 3.4 Which C preprocessor macros tell me whether I'm on Windows or Linux?
- 3.5 How can I check in the CMakeLists.txt code whether I'm on Windows or Linux?
- 3.6 Why do you use CMake at all?
Building
CMake actively encourages the user to build the project in a "separate build directory". That is, if the source is located in $HOME/gnucash, you should create a new directory for where the build is located - e.g. $HOME/gnucash/build, or also $HOME/gnucash-builds/my-build.
Currently in gnucash, there is an experimental cmake build system. Hence, to build this experiment yourself, run the following commands from the top-level gnucash directory:
mkdir build-cmake cd build-cmake cmake ..
The general syntax here is "cmake <path to source>". Once the build directory is set up (which is the case if the build directory contains a file named CMakeCache.txt), you can re-run cmake by typing "cmake <path to build directory>", e.g.
cd build-cmake cmake .
To run the build, as usual type
make
GnuCash Configuration Variables
GnuCash's CMakeLists.txt defines the following configuration options and defaults:
Option | Description | Default |
---|---|---|
WITH_SQL | Build this project with SQL (libdbi) support | ON |
WITH_AQBANKING | Build this project with aqbanking (online banking) support | ON |
WITH_GNUCASH | Build all of GnuCash, not just the library | ON |
WITH_CUTECASH | Also build cutecash | Removed in 3.x |
WITH_OFX | Compile with ofx support (needs LibOFX) | ON |
WITH_PYTHON | Enable python plugin and bindings | OFF |
ENABLE_BINRELOC | Compile with binary relocation support | ON |
ENABLE_REGISTER2 | Compile with register2 enabled | OFF |
DISABLE_NLS | Do not use Native Language Support | OFF |
DISABLE_DEPRECATED_GLIB | Don't use deprecated glib functions | OFF |
DISABLE_DEPRECATED_GTK | Don't use deprecated gtk, gdk or gdk-pixbuf functions | OFF |
DISABLE_DEPRECATED_GNOME | Don't use deprecated gnome functions | OFF |
ALLOW_OLD_GETTEXT | allow to configure build with a gettext version older than 0.19.6. Some files will not be translated! | OFF |
ENABLE_DEBUG | Compile with debugging flags set | (implicit) OFF |
To change from a default define the option on the cmake command line, e.g. -DWITH_PYTHON=ON. Other CMake variables you may need to define:
- CMAKE_INSTALL_PREFIX: The target installation directory, defaults to /usr/local.
- CMAKE_PREFIX_PATH: A ';' separated list of paths where dependencies are installed. No default.
- GNC_DBD_DIR: The location of the dbi-driver libraries, required for the SQL backends.
FAQ
How can you change between a Debug and Release build
- Use the options -DCMAKE_BUILD_TYPE=Debug or -DCMAKE_BUILD_TYPE=Release when calling CMake, or change the Variable CMAKE_BUILD_TYPE directly in the CMakeCache.txt file.
How can I see the actual compiler commands: Verbose mode?
By default, cmake builds the makefiles with verbose mode disabled. You can enable this verbose mode when calling make by the argument VERBOSE=1, like so:
make VERBOSE=1
Alternatively, you can switch on the verbose mode for the cmake configuration by setting the variable CMAKE_VERBOSE_MAKEFILE=on, like so:
cmake -DCMAKE_VERBOSE_MAKEFILE=on .
Which variables are set in CMake when running CMakeLists.txt?
- That's a long list. See http://www.cmake.org/Wiki/CMake_Useful_Variables
Which C preprocessor macros tell me whether I'm on Windows or Linux?
#ifdef __linux // For linux-only code // ... #ifdef _WIN32 // For Windows-MSVC and Windows-Cygwin, but *not* Windows-mingw // ... #ifdef __MINGW32__ // For Windows-mingw // ... #ifdef _MSC_VER // For only Windows-MSVC // ...
- Note: These macros do not result from CMake; instead, they exist in the respective build system already. Hence, those macros can be used regardless whether cmake is used or not.
How can I check in the CMakeLists.txt code whether I'm on Windows or Linux?
IF (UNIX) # All unix-like OS's, including Apple OS X (and Cygwin) # ... IF (WIN32) # All windows versions (including Cygwin) # ... IF (MINGW) # Mingw compiler on windows # ... IF (MSVC) # Microsoft compiler on windows # ...
- In other words:
- For Unix-only stuff you would write IF (UNIX)
- For Windows issues which concern either Mingw or MSVC, you would use IF (MINGW) or IF (MSVC), respectively.
- For Windows issues which hold for both compilers, you would useIF (WIN32).
Why do you use CMake at all?
See http://lists.gnucash.org/pipermail/gnucash-devel/2010-February/027582.html