(原創)cmake的編譯命令提取過程

2021-08-07 13:41:54 字數 892 閱讀 3494

本來今天應該更新《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('/***x.cpp ')<>-1

and line.find(' -c ')<>-1:

#包含原始檔名字和-c的資訊為需要提取的行

#提取出開頭為-d和-i的字段資訊作為編譯頭資訊。

cmake的編譯命令提取過程

本來今天應該更新 clang的python bindings 二 的,但是根據實驗室師兄的要求,先更新這一篇。由於專案需要,我們要針對每個開源專案中的源 檔案 cpp,cc,c 進行分析,提取其中的需要的資訊。為了保證資訊提取的準確,我們需要在每個源 檔案分析的時候加上對應的頭檔案目錄 i 以及編譯...

Cmake入門(一)基本編譯命令

首先,對於最簡單的,把乙個cpp檔案編譯成乙個可執行檔案,需要對cmakelists.txt中寫入如下三步內容 宣告cmake的最低版本 cmake minimum required version 3.0 宣告乙個cmake工程 project hello 新增乙個可執行程式 add execut...

CMake的交叉編譯

概念性介紹 首先介紹一下cmake。本文是針對cmake菜鳥的,所以必須先對cmake有乙個大概的認識,知道這是什麼 怎麼用以後,才可以考慮交叉編譯不是?cmake是乙個跨平台自動編譯工具,在kde等開源專案當中有很好的應用,從而證明了cmake的強大功能。cmake的作用是根據設定的配置自動生成編...