博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
emacs里用ebrowse解析已有的c++工程
阅读量:5874 次
发布时间:2019-06-19

本文共 1389 字,大约阅读时间需要 4 分钟。

hot3.png

在emacs.exe同级目录下能找到ebrowse.exe,但是在eshell里在C++工程目录下运行ebrowse时,提示找不到ebrowse程序。

  • 这个神奇的问题,我真不知道如何解释。用$(expand-file-name "ebrowse.exe" invocation-directory)这条命令可以解决这个问题。直接在eshell里输入这条命令,空格后输入--help可以看到ebrowse的帮助文档。  

在网上找了这么一条命令,但对我无效。

ebrowse $(find . -name "*.[hc]pp")

 

  • 这个我纠结了很久,碰到了各种问题。首先$()这种语法在eshell里是被当做elisp代码直接执行的,所以命令里的find被eshell里认为是一个elisp函数。可是总是报FIND语法不正确、拒绝访问、某某文件打不开等等各种错,越改错越多。然后我想到这个find函数可能只是调用本机的现成的find程序来做find任务的,因此直接将这条find命令在eshell里执行,还是报刚才那些奇怪的错。然后,在dos窗口下运行同样的命令,报了同样的错。很明显,elisp里的这个find函数调用了Windows系统的find命令,这不是我想要的,因为我对这条命令特别不熟,不知道怎么让它给我找出文件名符合特定规则的所有文件。于是,我用Git Bash里的find做了这件事:find . -type f -regex ".*\.[hc]+[xp]*" -fprint srcfile_names.txt在Git Bash里执行这条命令,可以将所有文件名后缀是.h/.c/.cc/.hpp/.hxx/.cpp/.cxx的C++代码文件名写入到srcfile_names.txt文件中。如果不区分后缀大小写,可以用-iregex代替-regex选项。总之,一番漫无目的之后,我得到了包含所有C++项目源代码文件路径列表的文本文件。我原先本想直接将这些文件名输出到stdin然后让ebrowse读取,但是ebrowse又报错,说我提供的文件列表太长,它处理不了。 

ebrowse路径问题搞定了,待解析的代码文件路径列表也搞定了,可是最后用ebrowse -f"srcfile_names.txt"解析时,又报错,说ebrowse无写BROWSE文件的权限。 

  • 不想再折腾文件或路径权限问题了。直接用ebrowse -f"srcfile_names.txt" -o"D:/xxx/UE4.10-BROWSE" 命令搞定。-o参数表示把解析结果写入到指定的文件中。解析完成后,记得把BROWSE文件拷贝到执行这条解析命令时的路径下。

整个解析问题就搞定了。这中间折腾了很久,碰到了远超过上面说的这些问题,各种报错,最后毕竟还是搞定了。其中,ebrowse.exe可以直接从emacs目录拷贝到其他地方去使用,没有必要像我这里expand-file-name搞那么复杂,想从哪个目录解析,就把ebrowse.exe拷贝到哪个目录就行了。 用emacs打开分析结果时,直接像打开普通文件一样C-x C-f定位到刚才的UE4.10-BROWSE文件即可自动用Tree模式打开。

转载于:https://my.oschina.net/zhoubaojing/blog/905297

你可能感兴趣的文章
HDOJ1233 畅通工程之一(最小生成树-Kruscal)
查看>>
14Spring_AOP编程(AspectJ)_环绕通知
查看>>
PHP之打开文件
查看>>
iOS - OC SQLite 数据库存储
查看>>
PHP-mysqllib和mysqlnd
查看>>
Redis常用命令
查看>>
NeHe OpenGL教程 第三十五课:播放AVI
查看>>
Linux下ping命令、traceroute命令、tracert命令的使用
查看>>
js replace,正则截取字符串内容
查看>>
socket
查看>>
Highcharts使用表格数据绘制图表
查看>>
Thinkphp5笔记三:创建基类
查看>>
LNMP之编译安装PHP出现的问题
查看>>
hdu5373
查看>>
4.单链表的创建和建立
查看>>
testng生成报告 testng-xslt 美化测试报告
查看>>
Android 好看的搜索界面,大赞Animation
查看>>
查询反模式 - GroupBy、HAVING的理解
查看>>
[转]动态加载javascript
查看>>
【协议】5、gossip 协议
查看>>