21

对 C / C++ 的模板基本代码生成器有什么建议,专门用于生成重复代码吗?(不是基于 UML / MATLAB 模型或其他高级的东西)。对于这个领域的新手,有什么好的通用教程(不是基于工具的)吗?

我发现GNU Autogen看起来不错,但看起来它需要一个陡峭的学习曲线。我更喜欢 Eclipse 之类的 IDE 插件,易于使用,最重要的是好的教程。

4

5 回答 5

15

代码生成的基本概念很简单——人们的需求也很多样化——所以有很多选择。

  • Boost.Preprocessor是一个建立在标准 C / C++ 预处理器之上的函数库,它使使用预处理器进行代码生成变得更加容易。它不像其他选项那样灵活,并且找出预处理器错误可能很棘手,但它仅使用标准语言功能这一事实大大简化了使用它并将其集成到您的构建中。
  • 如果您了解 Python,那么就有Cog
  • Google 的一些项目使用Pump
  • 有许多通用的模板解决方案(Python 的GenshieRuby等)。这些通常设计用于生成 HTML 和 XML,但也适用于代码。
  • 用您选择的脚本语言将某些东西组合在一起也很容易。

在不了解您的需求以及您熟悉的工具的更多信息的情况下,我无法给出更具体的建议。

我不熟悉任何提供 Eclipse 插件的东西。

于 2012-08-24T14:42:15.680 回答
4

如果您了解 Python,那么 Cog 可以被视为轻量级解决方案:http: //www.python.org/about/success/cog/

于 2012-08-24T14:48:45.173 回答
1

查看我对使用 M2T-JET(基于 Eclipse 的轻量级模板生成器)的Java 类的类似问题的回答。JET 与语言无关,您可以从示例中看到它相当容易使用。

于 2012-08-25T03:23:31.703 回答
1

我很欣赏使用 Lua 来完成这项任务,例如Templet或其他无数基于 Lua 的预处理器之一。使用 Lua 优于 Python 之类的好处是,如有必要,您可以将源代码包含到您的模板处理器和基本 Lua 安装以及您要交付的任何内容中。然后,您可以像往常一样将 Lua 和后续模板文件的编译添加到构建过程中。

我建议不要使用基于 Python 的解决方案,原因有一个:为了满足每个开发人员对完全不同但不兼容的版本的使用,同时使用各种 Python 是很烦人的。如果您选择使用无法嵌入到树中的语言,则需要确保预计算版本可用。

于 2015-02-04T03:57:26.940 回答
1

迟到了,但我会推荐Codeworker它是我发现的唯一工具,可以完成上述工具所做的一切,甚至更多。它具有类似于 Python Cog 的嵌入式生成功能,它具有基于模板的生成,例如 Templet 或 Pump。并且它具有相当有用的保护区功能,因此您可以根据需要自定义代码并重新生成。

我用它来生成所有样板 c++ 代码以及 SQL、config、javascript 等项目的配置。

于 2016-05-08T12:44:09.057 回答