在emacs irony 中对于c++头部无法支持,导致flycheck和company也会失效,主要想支持一个以cmake管理的c++项目,请问大家有什么推荐的解决方法吗?
headers 的补全
;;; backends for irony-c-header
(use-package company-irony-c-headers
:ensure t
:defer t
:init (progn (add-hook 'c-mode-hook
(lambda () (add-to-list 'company-backends 'company-irony-c-headers)))
(add-hook 'c++-mode-hook
(lambda () (add-to-list 'company-backends 'company-irony-c-headers)))
))
irony 集成 cmake
(use-package cmake-ide
:ensure t
:defer t
:init (progn
(add-hook 'c++-mode-hook (lambda () (cmake-ide-setup)))
(add-hook 'c-mode-hook (lambda () (cmake-ide-setup)))
)
)
(use-package cmake-mode
:ensure t
:mode (
("CMakeLists\\.txt\\'" . cmake-mode)
("\\.cmake\\'" . cmake-mode)
))
这是我自己的配置
1 个赞
那请问flycheck有办法吗:grinning:
(use-package flycheck-irony
:ensure t
:defer t
:init (progn
(add-hook 'flycheck-mode-hook #'flycheck-irony-setup)
))
(add-hook 'c++-mode-hook (lambda ()
(setq flycheck-clang-language-standard "c++11")
(setq irony-additional-clang-options '("-std=c++11"))
))
这个对头文件中的内容无法补全的。
但在源文件中可以补全。
要不你试试 cquery, 现在我也切到 cquery了,补全和索引都交给cquery, 而不是现在补全用 irony, 索引用 rtags. 但是奇怪的是,我并不会有你这样的flycheck 和company 的问题
1 个赞
推荐 cquery
1 个赞
好的,谢谢!
感谢,我去试试!
rtags-include-file也很好用
为什么不用 -std=gnu++17
或 -std=gnu++2a
… c++11
会禁用很多功能。
GCC 5默认的是 -std=gnu++14
rtags-include-file
什么作用?
因为我当时只需要用到 c++11
的,还没有用到 c++14
的特性… cpp 最不缺的就是新特性