cmake的編譯命令提取過程
阿新 • • 發佈:2018-12-03
cmake的編譯命令提取過程
本來今天應該更新《clang的python bindings(二)》的,但是根據實驗室師兄的要求,先更新這一篇。
工作背景
由於專案需要,我們要針對每個開源專案中的原始碼檔案(.cpp,
生成編譯資訊
根據導師的建議,通過對一個專案進行編譯,提取其編譯資訊,從中可以提取-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的欄位資訊作為編譯頭資訊。