spacemacs/layers/+tools/cmake/README.org

2.6 KiB

CMake layer

/TakeV/spacemacs/media/commit/6946e255e62ea2bd03a374923921d9aadb15e99f/layers/+tools/cmake/img/cmake.png

Description

This layer adds support CMake scripts.

Features:

  • Support for CMake configure/build (with limited support for other build systems), automatic generation of compile_commands.json (compile flags), on-the-fly configuration of flycheck, company-clang and RTags (if installed) with cmake-ide .
  • Run selected test using Helm interface via helm-ctest.

Install

Layer

To use this configuration layer, add it to your ~/.spacemacs. You will need to add cmake to the existing dotspacemacs-configuration-layers list in this file.

CMake-ide configuration

To enable CMake projects support set the layer variable cmake-enable-cmake-ide-support to t in the dotfile:

  (setq-default dotspacemacs-configuration-layers
    '((cmake :variables cmake-enable-cmake-ide-support t)))

cmake-ide plugin has several useful configuration options.

To configure project you need to create .dir-locals.el file. In case of using make as CMake backend you can use helm-make to select required build target.

Here is a sample configuration. This configuration forces cmake-ide to use the local directory and pass that directory to helm-make. Such config allows to build your project with SPC c c key binding.

Additionally it's possible to configure helm-ctest in the same way via defining helm-ctest-dir. Trailing slash is required.

  ((nil .
        ((cmake-ide-project-dir . "~/Project")
         (cmake-ide-build-dir . "~/Project/build")
         (cmake-ide-cmake-opts . "-DCMAKE_BUILD_TYPE=Debug")
         (helm-make-build-dir . "build")
         (helm-make-arguments . "-j7")
         (helm-ctest-dir . "~/Project/build/")
         )))

Key Bindings

Key Binding Description
SPC m p c Run CMake and set compiler flags for auto-completion and flycheck
SPC m p C Run CMake if compilation database JSON file is not found
SPC m p d Remove file connected to current buffer and kill buffer, then run CMake
SPC m p t Run CTest