从头自动生成C++文件?

问题描述 投票:0回答:5

我有一堆带有各种类和函数声明的 C++ 头文件。到目前为止,当我编写声明的类和函数的 C++ 源文件实现时,我一直是手动的:

  1. 将头文件中的声明复制到相应的源文件中。
  2. 删除“class classname {”和匹配的“};”
  3. 将“classname::”添加到所有类函数的名称中。
  4. 将函数声明后面的分号替换为“{}”。
  5. 删除关键字“virtual”和“static”。

只有在完成所有这些并没有真正做任何事情的工作之后,我才能真正开始实现这些功能。我想知道是否有一个工具可以从“.h”文件自动生成“.cpp”文件,其中生成的“.cpp”包含“.h”文件中声明的函数的空存根(并且尚未给出内联定义)。 UNIX 友好的命令行工具将是首选。谢谢。

更新:跨平台工具将是理想的选择。如果没有,我正在 Mac OS X 10.6 上工作。

c++ code-generation
5个回答
25
投票

Lazy C++ 似乎就是为了解决这个问题而设计的。


7
投票

我最近发现自己处于你的境地,并准备编写自己的工具——impl_me。这是一个小型 Ruby 脚本,使用 SWIG 作为解析器后端。它写入标准输出,以便您可以与您最喜欢的 nix 工具集

find
/
grep
/
sed
/
awk
结合使用,根据自己的喜好进行调整。

因为它是用Ruby编写的,所以它应该是跨平台的。 SWIG 也是跨平台的,所以一切都应该没问题。

现阶段它还很原始,在解析奇怪的模板和内容方面不如 Lazy C++ 那样强大。欢迎贡献:)



1
投票
我尝试了 Lazy C++,但它似乎已经过时并且不再维护。它也不支持最新的 C++14 标准。

这就是为什么我决定使用 ANTLR4 用 Java 编写自己的工具。它称为分数,您可以在这里找到它:

https://github.com/undererated/Score

目前它还处于起步阶段,可能充满错误,但我计划改进它。因此,如果您愿意,请尝试一下并在项目的 github 页面上报告任何错误。我会尽快修复它们。


0
投票
还为此编写了简单的简短脚本

示例:

https://github.com/shemeshg/TestHppGenerator/blob/main/lib/MyLib.hpp

运行者:

https://github.com/shemeshg/TestHppGenerator/blob/main/lib/parseHpp.py

产生:

https://github.com/shemeshg/TestHppGenerator/blob/main/lib/MyLib.h https://github.com/shemeshg/TestHppGenerator/blob/main/lib/MyLib.cpp

© www.soinside.com 2019 - 2024. All rights reserved.