spacemacs/layers/+tools/cmake
syl20bnr ebe4c60264 Revert "Defer packages by default using use-package-always-defer"
This reverts commit 29c78ce841 and all other fixes
that have been made afterwards.

The motivation is that use-package is seen by many as a replacement for
`require`. Is use-package always defer the loading of packages then is breaks
this use case, this does not respect POLA so even if it was making Spacemacs
loading faster (up to 3s faster on some startup on my machine) we just cannot
use it, it would be irresponsible. Spacemacs should be easy to use, loading
performance will come with time but it is not a priority.
2018-03-03 23:40:10 -05:00
..
img
config.el
packages.el Revert "Defer packages by default using use-package-always-defer" 2018-03-03 23:40:10 -05:00
README.org

CMake layer

/TakeV/spacemacs/media/commit/ebe4c602647801d59013915c8c97d44570556f3e/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