CMake is a powerful and easy to use build system for a wide variety of languages including:
- C / C++
- modern object-oriented Fortran 2008 / 2018
- Python
- Matlab / GNU Octave
It's important to use a recent CMake version to be effective and clean with CMake script. This can be done via the Python package described below, or from CMake >= 2.8.12 by:
cmake -P install_cmake.cmake
if you need to compile CMake from source, for example on BSD or ARM 32-bit using existing CMake >= 3.13:
cmake -P build_cmake.cmake
pip install cmakeutils
or
git clone https://github.com/scivision/cmakeutils
pip install -e cmakeutils
CMake plots dependency graphs for programs like:
cmake -B build --graphviz=gfx/block.dot
Then convert to PNG or SVG like:
python -m cmakeutils.graph ~/myprog/gfx
cmake_setup
takes only a minute to install binary and includes cmake-gui
.
It works for Linux, MacOS, native Windows and Windows Subsystem for Linux.
Ninja is strongly recommended in general for use with CMake on Windows, Mac and Linux:
ninja_setup
CMake can be builts from source using either:
- older version of CMake,
- without CMake using the "bootstrap" method
The bootstrap method is only for Unix-like systems, while the CMake-based build can also be used on Windows. Any platform for which Kitware doesn't distribute binaries use this script, including IBM Power and ARM.
cmake_compile
This downloads the latest CMake release source and builds from scratch.
Requirements:
- SSL library
- C++ compiler
- GNU Make or Ninja
- Download with git using FetchContent
- Download and extract ZIP
- measure system parameters with CMake. Note Cygwin reports really small RAM and zero virtual memory.
Octave from CMake via our FindOctave.cmake works well from CMake for unit tests, liboctave, etc. for Octave ≥ 3.8. We didn't try older versions of Octave.
One-time setup: if you've never used mex
before, you must setup the C++ compiler.
It doesn't hurt to do this again if you're not sure.
From Matlab:
mex -setup -client engine C++
Will ask you to select a compiler, or simply return:
ENGINE configured to use 'g++' for C++ language compilation.