是否有从 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的建议看起来最接近我一直在寻找的东西。