CLion開發編譯調試Makefile項目

前言

CLion之前只支持Cmake項目,不支持Makefile項目。從2018.2版開始提供對Makefile項目支持。官方博客的教程可以看這裏Working with Makefiles in CLion using Compilation DB
這裏大概介紹一下。CLion通過加載Makefile項目的編譯數據庫(Compilation DB)來打開項目文件來完成代碼補全, 靜態分析, 跳轉 和 重構功能。這樣就完全獲得CLion提供的高級IDE功能。
編譯數據庫(Compilation DB)允許CLion檢測項目文件並提取所有必需的編譯器信息,例如包含路徑和編譯標誌。這種方法使您能夠在IDE中運行並獲得其功能的完整體驗,同時使您的項目獨立於CMake。
一個編譯數據庫是一個名爲compile_commands.json的Json文件,包含有關項目中的每個編譯單元中的結構化數據。
以下代碼段顯示了JSON編譯數據庫的示例:

[
 {
  "directory": "/home/kevin/Workspace/cWorkspace/libjpeg_cpp", 
  "arguments": [
   "g++", 
   "-g", 
   "-O0", 
   "-std=c++14", 
   "-Wall", 
   "-o", 
   "jpeg.o", 
   "-c", 
   "jpeg.cpp"
  ], 
  "file": "jpeg.cpp"
 }, 
 {
  "directory": "/home/kevin/Workspace/cWorkspace/libjpeg_cpp", 
  "arguments": [
   "g++", 
   "-g", 
   "-O0", 
   "-std=c++14", 
   "-Wall", 
   "-o", 
   "main.o", 
   "-c", 
   "main.cpp"
  ], 
  "file": "main.cpp"
 }
]

至於如何生成這個文件,下面會介紹。但是當CLion成功識別這個編譯數據庫文件之後,並不能進行調試。主要是因爲目前CLion調試只能在CMake項目中使用。其實解決起來也不難,只需要在識別編譯數據庫(Compilation DB)之後再建立CMakeLists.txt文件,就能實現調試功能了

安裝compiledb

在開始之前,我們需要安裝一個可以從Makefile生成Compilation DB JSON文件的工具。我們將在本教程中使用的工具是compiledb。它是用Python編寫的,所以最簡單的方法是使用pip。

$ pip install compiledb

(你可能需要在前面加 sudo)

識別Makefile項目

  1. 生成Makefile
    如果項目本身就是Makefile,不需要再生成。如果是開源項目,往往需要生成Makefile。
  2. 從Makefile生成compile_commands.json
    $ compiledb -nf make
    
  3. 使用CLion打開該項目
    打開該項目後,CLion將檢測該compile_commands.json文件並查看其項目信息。您可能會在幾秒鐘內看到它,然後在“Build”工具窗口中顯示“Compiler Info”選項卡,告訴您所有內容都已完成(您可以在“Sync”選項卡中看到任何錯誤或警告) )。
    在這裏插入圖片描述
  4. 測試是否建立索引成功
    打開一個源碼文件,如果上一步沒有錯誤的話,你應該會看到代碼已經着色了,並且可以聲明和定義之間跳轉了,一切跟你打開CMake項目一樣
  5. 監聽Makefile修改,自動生成compile_commands.json
    如果每次修改完都要手動運行生成compile_commands.json的命令,這就太不程序員了。而且種沒有意義的操作,還是自動化的好。需要安裝下面兩個CLion Plugin:File Watchers, Makefile support
    在這裏插入圖片描述
    在這裏插入圖片描述
    安裝完成並重啓後,就可以配置對makefile的監聽了。按下圖配置即可
    在這裏插入圖片描述

調試Makefile項目

完成了上面的步驟,你只能做一些代碼編輯的工作,這樣是不夠的,我們還需要編譯調試。下面就介紹如何編譯調試

  1. 在項目根目錄新建CMakeLists.txt文件,並填寫如下內容。
cmake_minimum_required(VERSION 3.4.1)
project(libjpeg CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_VERBOSE_MAKEFILE 1)
add_custom_target(makeJpegCmd
        COMMAND make -j8
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

點擊Load CMake project,如下圖所示
在這裏插入圖片描述
配置Run/Debug
在這裏插入圖片描述
再切換到Compilation DB。Tools -> Compilation Database -> Reload Compilation Database Project

這樣就可以開始在Makefile項目上開發,編譯並調試了。
以下是調試界面截圖
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章