cpputils-cmake automatically enable real time syntax check (Flymake) and IntelliSense (auto-complete+auto-complete-clang) if you use CMake.
It does all the configuration dirty job automatically for you. So you can use Flymake, auto-complete, auto-complete-clang, compile with almost no configuration.
cpputils-cmake is already uploaded to http://marmalade-repo.org/. So the best way to install it is using Emacs’ package manager.
Copy and paste below code into your .emacs:
(add-hook 'c-mode-common-hook (lambda ()
(cppcm-reload-all)
; fixed rinari's bug.
(remove-hook 'find-file-hook 'rinari-launch)
))
;; OPTIONAL, avoid typing full path when starting gdb
(global-set-key (kbd "C-c C-g")
'(lambda ()(interactive) (gud-gdb (concat "gdb --fullname " (cppcm-get-exe-path-current-buffer))))
)mkdir -p hello/src;printf "#include <stdio.h>\nint main(void) {\nprintf(\"hello world\");\nreturn 0;\n}" > hello/src/main.cpp;printf "cmake_minimum_required(VERSION 2.6)\nadd_executable(main main.cpp)" > hello/src/CMakeLists.txtPlease note you need run “Make” at least once before using cpputils-cmake:
mkdir hello/build;cd hello/build;cmake ../src;make clean;makeIf you use another directory name like “mybuild” instead of “build”, you must add following line into your .emacs:
(setq cppcm-build-dirname "mybuild")Now typing some random code and watch the real time hint on your syntax errors.
Compile the program: `M-x compile`
You can see the default command line displayed in minibuffer is `make -C ~/your-projects-blah-blah/hello/build`
BTW, you can also run the command `M-x cppcm-compile` to compile the current excutable only.
You can see the actual command displayed in minibuffer is `make -C ~/your-project-blah-blah/hello/build/sub-project-dir-if-your-are-editing-its-cpp-file`
Press hot key `C-c C-g` (suppose you’ve copied my configuration from previous section).
You can see the gud-gdb starts and the executable “~/your-projects-blah-blah/hello/build/main” is loaded automatically.
Use them as usual. You can see that the Intellisense/auto-complete is more precise.
Press the hot key `C-x C-o` or `M-x ff-find-other-file`. The corresponding header file is opened correctly.
This is the default feature of Emacs. What cpputils-cmake does is set up the directories of those header files for you automatically so that the header files could be found by Emacs.
The command “cppcm-get-exe-path-current-buffer” will copy the current executable into the kill ring (clipboard).
This could be very useful if you want to access the directory directory of the executable as quickly as possible.
You can yank (paste) the full path to the eshell or minibuffer and press “M-backspace” to get the directory name.
You can report bugs at https://github.com/redguardtoo/cpputils-cmake. My email is <chenbin DOT sh AT gmail>.
Copyright (C) 2012 Chen Bin
Author: Chen Bin <chenbin DOT sh AT gmail DOT com> Keywords: flymake IntelliSense cmake
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.