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.
Hello, I have some problem with directory local variables. I want to configure spacemacs for C/C++ projects.
I'm following tutorials from C/C++ in Spacemacs and C++ dev env setup. Both of this tutorials suggests to
create file in project's root directory
.dir-locals.el
with following code:And to permanenly mark these value as safe I've added:
to my
~/.spacemacs
config insidedotspacemacs/user-config
My test project directory now looks as following:
But, when I'm try to compile (SPC-c-c) I've an error: Wrong type argument: arrayp, nil.
I'm running on: