7cc06ce63e
Thank you everybody for participating in #11741 in order to make this possible! |
||
---|---|---|
.. | ||
img | ||
config.el | ||
packages.el | ||
README.org |
CMake layer
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 viahelm-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/")
)))
In case of projectile it’s possible to configure project like:
((nil . ((eval . (setq
projectile-project-test-cmd #'helm-ctest
projectile-project-compilation-cmd #'helm-make-projectile
projectile-project-compilation-dir "build"
helm-make-build-dir (projectile-compilation-dir)
helm-ctest-dir (projectile-compilation-dir)
))
(projectile-project-name . "My Cool Project")
(projectile-project-run-cmd . "./run.sh")
(projectile-project-configure-cmd . "cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..")
(helm-make-arguments . "-j7"))))
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 |