(原创)cmake的编译命令提取过程

cmake的编译命令提取过程


本来今天应该更新《clang的python bindings(二)》的,但是根据实验室师兄的要求,先更新这一篇。

工作背景

由于项目需要,我们要针对每个开源项目中的源代码文件(.cpp,.cc,*.c)进行分析,提取其中的需要的信息。为了保证信息提取的准确,我们需要在每个源代码文件分析的时候加上对应的头文件目录(-I),以及编译时定义的宏(-D)。

生成编译信息

根据导师的建议,通过对一个项目进行编译,提取其编译信息,从中可以提取-D信息和-I信息。但是如何正确生成并且提取这些信息成了问题。
经过分析我发现了如下的命令行可以相对准确的提取信息

cd project_dir
mkdir build_dir
cd build_dir
vim CMakeLists.txt
#在其开头添加一行  set(CMAKE_VERBOSE_MAKEFILE on)
cmake ../ #在其源代码目录中生成cmake信息。
cmake --debug-output --build . #让cmake进入debug模式,可以输出具体的编译信息
cmake --build . > cmake_info

提取编译信息

这里采用的是根据每一行的信息的特征来进行提取,虽然简单粗暴了一点,但是还算是实用。

提取编译信息

with open("/path/to/cmake_info","r") as f:
    for line in f.readlines():
        if line.find('/xxxx.cpp ')<>-1 and line.find(' -c ')<>-1:
            #包含源文件名字和-c的信息为需要提取的行
            #提取出开头为-D和-I的字段信息作为编译头信息。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值