


This is typically used to allow the user to control whether to compile in various sub-modules or to specify alternate libraries.Īdd_custom_target() is used to create additional make targets, like 'make dist', 'make uninstall', 'make check', and so on. Option() lets you establish cmake options the user can use to control the build. A common use would be to substitute the current release version number into C files or documentation, or to fill in configuration values into a config.h.in template. Let's take a quick overview of a few of the other common function calls that you'll run across in Inkscape's CMake files.Ĭonfigure_file() is a convenient way to process template files and substitute parameters in them with the values of variables within the cmake script. It has a bunch to help determine what platform the build is building for:ĬMake also has a slew of variables to keep track of directories that things should go to: Note that this will require a full-rebuild of the whole of InkscapeĪs you can imagine, CMake provides a broad set of pre-defined variables that relate to build systems. If you end up in a dead-end with things not building anymore, you can clean the cmake cached files by issuing
CMAKE SET VARIABLE TO TRUE FULL
the full gcc command line used for compilation, by adding VERBOSE=1 to make: When you produce Makefiles using cmake, and make fails, you can get verbose output e.g. Print full command line used when building The '.' argument to the cmake command tells CMake to look in the current directory for source files. CMake assumes that the current directory is where we want all our stuff built to. Build files have been written to: /tmp/cmake-tutorialĬMake will automatically recognize "CMakeLists.txt" as its config file. The syntax for declaring a variable and setting it if it is not already set is: set(MYCACHEVARIABLE 'VALUE' CACHE STRING 'Description') This will not replace an existing value. Some variables are already here, like CMAKEBUILDTYPE. Now run cmake in the build directory, specifying the path to the source directory:

It's fine to add newlines between arguments inside the parens. Essentially, everything is a function call.Įven just setting variables is a function call:įunction calls have parenthesis but arguments aren't separated with commas, just whitespace. 3 Print full command line used when buildingĬmake has its own language and syntax, but it's pretty simple.
