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的字段信息作为编译头信息。
						

猜你喜欢

转载自blog.csdn.net/QTVLC/article/details/83176194