回家装上 archlinux, 突发奇想装个 SpaceVim 写题
安装配置一路可以说是没有太大问题
最后在写题时出现如下问题
- Error while trying to load a compilation database:
- Could not auto-detect compilation database for file "poj-1458.cpp"
- No compilation database found in /home/tanglizi/Code/acm/summerTraining/2018 or any parent directory
- fixed-compilation-database: Error while opening fixed database: No such file or directory
- json-compilation-database: Error while opening JSON database: No such file or directory
- Running without flags.
查了查 google, 发现这是 clang-check 的问题, clang-check 需要一个 compile_commands.json 文件 (可由 cmake 生成) 做到工程化 check
那么问题迎刃而解
方法一
卸载 clang, 换上 gcc
绝对暴力的方法, 可以说很不优雅了
方法二
手写 compile_commands.json 文件, 或者 cmake 一个工程
但是对 ACM 刷题党来讲, 这个实在不方便
方法三
瞬间抛弃了前两个方法, 于是开始修改 vim 插件
还是查了查 google, 发现问题在于一个名叫 neomake 插件
于是查找有关 clang-check 的文件, 看看是怎么调用 clang-check 的
- grep clang-check -R ~/.cache/vimfiles/repos/github.com
- # /home/tanglizi/.cache/vimfiles/repos/github.com/neomake/neomake/autoload/neomake/makers/ft/c.vim: "'exe': 'clang-check'
- vim /home/tanglizi/.cache/vimfiles/repos/github.com/neomake/neomake/autoload/neomake/makers/ft/c.vim
可以看到第 32 行出现 clang-check
- function! neomake#makers#ft#c#clangcheck() abort
- return {
- \ 'exe': 'clang-check',
- \ 'args': ['%:p'],
- \ 'errorformat':
- \ '%-G%f:%s:,' .
- \ '%f:%l:%c: %trror: %m,' .
- \ '%f:%l:%c: %tarning: %m,' .
- \ '%I%f:%l:%c: note: %m,' .
- \ '%f:%l:%c: %m,'.
- \ '%f:%l: %trror: %m,'.
- \ '%f:%l: %tarning: %m,'.
- \ '%I%f:%l: note: %m,'.
- \ '%f:%l: %m',
- \ }
- endfunction
于是在 33 行的 args 里面加上'--', 同理处理 clang-tidy(75 行), 就搞定了
\ 'args': ['%:p', '--'],
思路是在原命令后加上'--',clang 就不查找 compilation database 了
clang-check file.cpp --
来源: http://www.bubuko.com/infodetail-2690908.html