如何为C++ STL 模板文件生成标记文件,例如未来

How to generate tags file for a C++ STL template file like future?

本文关键字:文件 未来 STL C++      更新时间:2023-10-16

我想为C++ STL 文件生成一个标签文件。但它似乎效果不佳。例如,我使用以下命令

 sudo ctags -R --c++-kinds=+p --fields=+iaS --extra=+q future

"未来"是来自海湾合作委员会的文件

结果,标记文件如下所示

!_TAG_FILE_FORMAT   2   /extended format; --format=1 will not append ;" to lines/                                                                                                     
!_TAG_FILE_SORTED   1   /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR    Darren Hiebert  /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME  Exuberant Ctags //
!_TAG_PROGRAM_URL   http://ctags.sourceforge.net    /official site/
!_TAG_PROGRAM_VERSION   5.8 //

找不到任何标签,例如在文件中定义的"异步","未来",未来,如下所示,

  template<typename _Fn, typename... _Args>
    future<typename result_of<_Fn(_Args...)>::type>
    async(launch __policy, _Fn&& __fn, _Args&&... __args);
  template<typename _Fn, typename... _Args>
    future<typename result_of<_Fn(_Args...)>::type>                                                                                                                                   
    async(_Fn&& __fn, _Args&&... __args);

您在命令行上指定了"future"作为输入文件名。我不知道你使用的是哪种ctags实现,但我想ctags将来无法知道使用的语言。因此,ctags 无法选择适合"未来"的解析器。如果使用 --language-force=C++ 显式指定"future"的语言,则 ctags 可能会很好地工作。以下几行显示了通用 ctags(https://ctags.io( 标签两个"异步"。

[jet@localhost]/tmp% cat future
template<typename _Fn, typename... _Args>
future<typename result_of<_Fn(_Args...)>::type>
async(launch __policy, _Fn&& __fn, _Args&&... __args);
template<typename _Fn, typename... _Args>
future<typename result_of<_Fn(_Args...)>::type>                                                                                                                                   
async(_Fn&& __fn, _Args&&... __args);
[jet@localhost]/tmp% ctags --version
Universal Ctags 0.0.0(d30a62d), Copyright (C) 2015 Universal Ctags Team
Universal Ctags is derived from Exuberant Ctags.
Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Jun 26 2017, 00:15:01
  URL: https://ctags.io/
  Optional compiled features: +wildcards, +regex, +multibyte, +option-directory, +xpath, +json, +interactive, +sandbox, +yaml, +aspell
[jet@localhost]/tmp% ctags --kinds-C++=+p --fields=+iaS --extras=+q --language-force=C++ -o - future
async   future  /^async(_Fn&& __fn, _Args&&... __args);$/;" p   typeref:typename:future<typename result_of<_Fn (_Args...)>::type>   file:   signature:(_Fn && __fn,_Args &&...__args)
async   future  /^async(launch __policy, _Fn&& __fn, _Args&&... __args);$/;"    p   typeref:typename:future<typename result_of<_Fn (_Args...)>::type>   file:   signature:(launch __policy,_Fn && __fn,_Args &&...__args)