使用clang工具将自动生成的代码添加到源文件

时间:2017-10-24 09:36:31

标签: c++ llvm clang++

我正在研究项目的日志记录机制,目前每个API函数都需要添加

start_api_call(***)

在函数的开头 函数do_something(int foo, int bar)的***为"foo", foo, "bar",bar

(日志功能获取参数并形成所需的消息)

我想让这一行自动生成,其中的目标是以某种方式(mabye clang工具?)编译器检查.cpp中的每个函数,如果它是API函数(稍后会有更多详细信息),如果它是的,只需将start_api_call(***)添加到代码中即可。

我有两个主要问题,我应该去哪个方向 1)我从来没有编写代码,它的目标是'是要解析一个源代码,因此我不知道我应该走向哪个方向,我已经阅读了一些关于clang工具的文档,但也许只是一个python脚本会更好吗?
<登记/> 2)我们的设计如下:

object_foo.h //inside .include/
class foo{
API functions
}

object_foo_impl.h //inside .src/
include "object_foo.h"
class foo_impl :foo{
foo API functions
a lot more functions
}

object_foo_impl.cpp
include "object_foo_impl.h"
{
implementation of all foo_impl functions
}

应仅为API函数插入start_api_call, 因此,如果此函数来自foo.h,或者来自foo_impl.h文件,我需要在.cpp文件中找到查询的方法。

我有一个如何使用python脚本工作的概念,它解析我们所有的源代码,使用正则表达式识别/include/.h文件中的文本是一个函数然后查找里面的所有函数。实现这些功能的cpp文件,
但是(如果可能的话)在编译(/预处理器)时间中添加规则的概念更具吸引力 非常感谢任何帮助。

0 个答案:

没有答案