推荐C++编辑器 Clion
2018-11-27
备注: 然而, 2019年, 本人还是使用通过slickedit阅读代码, 主要是看中其快捷键自定义功能. 2021年: 现在使用 vscode+ccls
1. 优点
- c++中支持以 namespace::method 的方式来搜索symbol. (vscode中仅在当前文件时, 才可alt+n navigate) (slickedit通过context tagging可以搜索到)
- 支持重构, 比如重命名之类的, 不必到处替换.
- 支持 your_filename.c:846:14 直接跳转到指定的行和列. 在编译出错后, 复制出错信息, 然后 ctrl+shift+n, 然后粘贴类似 your_path/your_filename.c:846:14 来打开文件. (vscode中是 ctrl+p goto to file)
- 好用的 "Find Usages", 就是查看谁使用了这个函数, 并不是基于字符串搜索. 比如, 对leveldb/db/version_set.cc的Version::Get使用Find Usages, 会跳转到 Status DBImpl::Get()中的 s = current->Get(options, lkey, value, &stats);
- 杂项:
- shift 两次 (search everything), 搜索 wrap, 移动到第1项是 use soft wrap, 回车, 即可应用该选项.
2. 缺点
- 注释中的内容, 比如类似 //your_func
无法通过ctrl+鼠标, 但是 可以通过 查找符号 定位到. - 对网络挂载的代码 不友好. 若发生网络断开, 那么, 需要重新索引.
- 30天 试用
3. troubleshooting
现象: ceph中 src/mon/Paxos.cc
void Paxos::dispatch(MonOpRequestRef op)
{
assert(op->is_type_paxos());
op->mark_paxos_event("dispatch");
}
op->mark_paxos_event
无法通过ctrl+鼠标来跳转.
src/mon/MonOpRequest.h中有 typedef MonOpRequest::Ref MonOpRequestRef;
src/mon/MonOpRequest.h中有
typedef ceph::shared_ptr
src/include/memory.h中有
namespace ceph {
using std::shared_ptr;
}
原因:
paxos.cc 有 #include "Monitor.h"
monitor.h 中 #include "include/memory.h"
但编辑器中对 文件monitor.h 报找不到路径include/memory.h
memory.h的路径为ceph_v10.2.10/src/include/memory.h
处理:
往 顶层的自动生成的CMakeLists.txt中添加
include_directories(src)
然后, 重载 cmake 工程.
本文地址: https://awakening-fong.github.io/posts/tools/why_clion
转载请注明出处: https://awakening-fong.github.io
若无法评论, 请打开JavaScript, 并通过proxy.
blog comments powered by Disqus