c++ - 如何使用 shell magic 使用 GNU etags 创建递归 etags?

标签 c++ bash gnu etag exuberant-ctags

标准的 GNU etags 不支持目录的递归遍历,就像 exuberant ctags -R 所做的那样。如果我只能访问 GNU etags,我如何使用 bash shell magic 让 etags 为所有 C++ 文件 *.cpp*.h 生成一个 TAGS 表> 当前目录和当前目录下的所有目录中的文件以递归方式在当前目录中创建一个 TAGS 表,该表具有 emacs 解析 TAGS 表条目的正确路径名。

最佳答案

Emacs Wiki通常是常见问题或最佳实践答案的良好来源。对于您的具体问题,有适用于 Windows 和 Unixen 的解决方案:

http://www.emacswiki.org/emacs/RecursiveTags#toc2

基本上,您运行一个命令来查找所有 .cpp 和所有 .h 文件(如果您使用不同的文件结尾,请更改文件选择器,例如 .C) 并将结果通过管道传输到 etags 中。由于 Windows 似乎没有 xargs,因此您需要更新版本的 etags,它可以从 stdin 读取(请注意行末尾的破折号,它表示 stdin)。当然,如果您使用最新版本的 etags,您也可以使用 dash 参数代替 xargs。

window :

cd c:\source-root
dir /b /s *.cpp *.h *.hpp | etags --your_options -

Unix:

cd /path/to/source-root
find . -name "*.cpp" -print -or -name "*.h" -print | xargs etags --append

关于c++ - 如何使用 shell magic 使用 GNU etags 创建递归 etags?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10738219/

相关文章:

c++ - 我应该从 Boost::filesystem::copy 得到什么错误代码

BASH 字符串解析

linux - apache2 www-data 下的多个实例

c - 用于解析参数 GNU 风格的库?

c++ - C++ 中复杂变量的 OpenMP 减少的优雅(和典型)解决方法?

c++ - 限定符丢失转换 C++

C++ 随机数生成器只输出 2

bash 脚本 : find max, 按列分组和排序

macos - Mac Terminal (Bash) 批处理程序使用 ffmpeg 获取多媒体文件信息

c - 如何使用C在bash中实现逻辑运算符?