Based on Eivind Fonn's tutorial [https://www.youtube.com/watch?v=OjbkCEkboA8]
Simply add this (c-c++ :variables c-c++-enable-clang-support t)
in dotspacemacs-configuration-layers
, like this:
...
dotspacemacs-configuration-layers
'( ...
(c-c++ :variables c-c++-enable-clang-support t)
...
)
...
This configuration will enable clang
support, so you have to
guarantee clang
has been installed.
This is the simplest situation, that you can open any source code file,
then type SPC c c
for compilation.
SPC c C
is for specifying compilation command, sometimes need this
for enabling debug mode.
In this situation we need to specify the location of Makefile
.
.dir-locals.el
file is needed for this purpose. .dir-locals.el
should be placed in project root. The file content looks like this:
((c++-mode (helm-make-build-dir . "build/")))
-
The path
build/
is relative to project root directory. -
Emacs will ask if the variable
helm-make-build-dir
is safe.Put the configuration in
.spacemacs
to prevent this.(put 'helm-make-build-dir 'safe-local-variable 'stringp)
If the project depends on third party libraries or header files in special locations,
clang
will not figure out how to analyze source codes and provide auto-complete tips. We need
the .clang_complete
file to specify the compilation flags. That
file can be generated by cc_args.py
, which is a tool provided by
clang-complete
project. Otherwise, The simplest way to install cc_args.py
, I
think is move the file to /usr/local/bin/
.
The video by Eivind Fonn demonstrates how to use cc_args.py
with
cmake
. [28:00 - 29:40].
CXX="cc_args.py g++" cmake ...#other flags
I find the codes below can work with Makefile
and make
system directly, but
it will invoke the compilation process. And the compilation process
always been interrupted by errors, though it can generate the
.clang_complete
file. This may cause incomplete compilation flags
in .clang_complete
.
CXX="cc_args.py g++" make all
-
Turn off Warnings about unused variables
Add
-Wno-unused-parameter
to.clang_complete
file.
So the target executable file will contain debug information.
The GUD interface in Spacemacs has a problem, which cause the current line indicator disappeared.
I have the same problem @NovaSurfer had.
Also wen I configure it like shown in the video by Elvin Fonn https://www.youtube.com/watch?v=OjbkCEkboA8&t=262s
Spacemacs [email protected]