但是emacs也很多年了,代码跳转和补全这种问题,没有一个稳定的解决方案,确实有点让我惊讶,原来我觉得是自己不懂,但semantic解析c/c++宏确实有问题。company结合clang后端也确实有很多低级失误……tags的实时性差,可还是有这么多tags方案……无法理解。
因为等你的代码再多写一些的时候,会发现这个功能其实没那么重要.
因为有个事情……对于大多数Emacs核心用户来说,tag系统已经足够他们用了……
Emacs从来都不是个真正意义上的写给用户的软件……
对于写底层/驱动之类的人来说,更不重要……
但这也是一个问题,虽然不重要,也要有个好的解决方案。
之前一直没有这些功能,代码也写过来了,就是偶尔觉得别扭一点。我们都知道,与其依赖软件,不如自己对工程了如指掌。最近这不过年,公司没什么活,就想折腾折腾。
tags怎么能做到比较高效的更新?我现在在代码更目录运行一遍ctags -e -R需要很久才能生成一个32MB的文件……这种速度的话也就每天更新一次,或者不得不更新的时候更新一次。
另外,tags只是基于文本给予补全和跳转,不能基于语法。
所以我让你用IDE啊……
CPU MEM
105. 15.9 4:56.23 code /usr/share/code/resources/app/out/bootstrap --type=watcherService
100. 4.2 1:57.94 Microsoft.VSCode.CPP.Extension.linux
这是我用vscode在curl项目里随便打开了一个文件,这个状态已经持续了几分钟了.而且vscode一直已100%左右的cpu占用率运行.看来大家都没有什么太好的办法.
建议你试试ycmd,或者用sublimetxt,里面有一个EasyClangComplete更新很活跃。其实vscode是很方便的,只是项目一大就容易cpu占用超高。
有VS用干嘛不用
用vs+vsx,让生活轻松一点
开源很大程度上就是用户=开发者
说真的搞到现在我是有点服气了,用IDE确实是一种幸福……
Windows对于开发就是不友好。你这些问题都是对这些工具了解太少了……不过我有的时候也想偷懒不多读文档而是直接问#emacs等
觉得Emacs折腾困难或者不愿意投入时间的话,Clion或Eclipse都是不错的替代。 vscode-cpptools不支持查找索引,也许某种商业版本支持。
我花了两天的时间,在论坛里找各种方法,很多emacs插件并没有特别好的使用说明,有些因为时间、平台的差异,已经难以复用……
很多时候就是要RTFSC。他们很多又不是做这些OSS谋生的,怎么能希望他们做更多
你如果能折腾出 ycmd EacyClangComplete rtags irony-mode,cquery 需要的 libclang.dll
和Clang resource directory (lib/clang/5.0.1/
)都能在某些地方找到。
elisp C没有dependent name, argument-dependent lookup这些恶心的东西,struct member重名也不多,有个tags-based tool的UI确实够用了。用于 C++真是痛苦
怎么都是劝退的
1年多之前试用过 windows sub for linux, 那时功能还很不健全,后来还是退到 msys2了。 不知道现在如何了? 有谁清楚吗。
除了 Ray 提到的 argv[0] 的方式以外,也可以用 -target 来指定编译到的目标架构。有一个问题是这种情况下 libclang 很可能找不到 system header,需要一并在参数里面通过 -I 和 -isystem 指定。
对于不太复杂的项目结构(比如整个项目都是要交叉编译到 ARM 下的;或者平台相关的代码和 portable 的代码混合,平台相关代码放到独立的目录下),可以用 .cquery 的方式配置,基本够用。
我有试过在 Windows 上用 cquery 索引一个只能在 Linux 下(交叉)编译到 amd64 / armv7 / aarch64 且还包含 CUDA 代码的东西,在做了一大堆诸如把 header 抠出来的怪事之后,除了CUDA的部分(还没来得及解决)以外基本上可用,但 libclang 时不时崩溃非常令人抓狂。
WSL 现在各种常见程序的兼容性问题基本被解的差不多了(在即将到来的 1803 里甚至能运行 chromium --disable-sandbox ),但IO效率低和难以与原生 Windows 程序交互的问题还是没有解决。
和原生win程序交互的问题,应该影响不到我。 请问io效率低的问题,和msys2以及cygwin来比较,是什么水平呢?应该要比他们好些吧?
我试过使用cquery,不过我是在windows中用cygwin使用emacs,所以我需要自己编一个cquery的language server,但是github上面取到的脚本,在windows下没能按我想的那么工作,configure时候报错无法找到stdio.h,windows平台也没有预编译版本……