基于模板的C/C++代码生成



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

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

代码生成的基本概念足够简单,人们的需求也足够多样化,因此有很多选择。

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

如果不更多地了解你的需求和你喜欢的工具,我就无法给出更具体的建议。

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

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

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

我很欣赏将Lua与Templet或其他无数基于Lua的预处理器一起用于此任务。与Python相比,使用Lua的好处是,如果必要,您可以将源代码包括到模板处理器和基本的Lua安装中,以及您要运送的任何东西。然后,您可以像往常一样将Lua和后续模板文件的编译添加到构建过程中。

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

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

我已经用它生成了所有的锅炉板c++代码,以及SQL、config、javascript等项目的配置。

最新更新