1

是否有从 XML(或类似的东西)生成 C/C++ 源代码以创建命令行参数解析功能的工具?

现在对问题进行更长的解释:

到目前为止,我一直使用gengetopt进行命令行参数解析。它是一个很好的工具,可以根据自己的配置格式(文本文件)生成 C 源代码。例如 gengetopt 配置行

option "max-threads" m "max number of threads" int default="1" optional

除其他外,生成一个变量

int max_threads_arg; 

我以后可以使用。

但是 gengetopt 没有为我提供这个功能:

  • 一种从 gengetopt 配置格式生成 Unix 手册页的方法

  • 一种从 gengetopt 配置格式生成 DocBook 或 HTML 文档的方法

  • 当我有多个共享一些常用命令行选项的程序时,一种重用 C/C++ 源代码和重用 gengetopt 配置行的方法

当然 gengetopt 可以通过运行为我提供文档文本

command --help

但我正在搜索标记文档(例如 HTML、DocBook、Unix 手册页)。

您知道是否有任何具有自由开源许可证的 C/C++ 命令行参数工具/库可以满足我的需求?

我猜这样的工具会使用 XML 来指定命令行参数。这将使生成不同格式的文档(例如手册页)变得容易。只有在构建时才需要 XML 文件来生成 C/C++ 源代码。

我知道可以使用其他一些命令行参数解析库在运行时读取 XML 中的配置文件,但我正在寻找一种在构建时从 XML(或类似的东西)生成 C/C++ 源代码的工具。

更新 1

我想在编译时尽可能多地进行计算,而在运行时尽可能少地进行计算。所以我想避免给你一个命令行选项映射的库,比如 boost::program_options::variables_map (教程)。

换句话说,我更args_info.iterations_arg喜欢vm["iterations"].as<int>()

用户tsug303建议使用该库TCLAP。它看起来相当不错。将选项分成几组可以满足我的需要,这样当多个程序共享一些通用选项时,我可以重用代码。尽管它不会从 XML 的配置文件格式生成源代码,但我几乎将该答案标记为已接受的答案。

但是没有一个推荐的库能满足我的所有要求,所以我开始考虑编写自己的库。草图:一种将自定义 XML 格式作为输入并生成 C++ 代码和 XML 模式的新工具。其他一些 C++ 代码是使用 CodeSynthesis XSD 工具从 XML 模式生成的。两块 C++ 代码组合成一个库。一个额外的好处是我们获得了一个用于命令行选项的 XML Schema,并且我们获得了一种将它们全部序列化为二进制格式(从 CodeSynthesis XSD 生成的 CDR 格式)的方法。我会看看我是否有时间编写这样一个库。更好的当然是找到一个已经实现的库。

今天我读到了用户Nore建议替代方案。它看起来很有希望,当计划中的 C++ 代码生成已经实现时,我会渴望尝试一下。来自Nore的建议看起来最接近我一直在寻找的东西。

4

3 回答 3

2

也许这个TCLAP图书馆会满足你的需要?

于 2012-05-05T19:13:32.490 回答
1

我可以建议你看看这个项目。这是我目前正在研究的:A XSD Schema,用于描述 XML 中的命令行参数。我进行了 XSLT 转换以创建 bash 和 Python 代码、XUL 前端界面和 HTML 文档。

不幸的是,我还没有生成 C/C++ 代码(已经计划好了)。

编辑:C 解析器的第一个工作版本现在可用。希望能帮助到你

于 2012-07-14T15:02:07.190 回答
0

我将添加另一个名为protoargs的项目。它使用cxxopts从protobuf proto 文件中生成 C++ 参数解析器代码。

不幸的是,它不能满足所有作者的需求。没有生成文档。没有编译时计算。但是,有人可能会发现它很有用。

UPD:正如评论中提到的,我必须指定这是我自己的项目

于 2021-11-05T12:37:45.423 回答