CLion开发编译调试Makefile项目

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lylwo317/article/details/86673912

前言

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项目上开发,编译并调试了。
以下是调试界面截图
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lylwo317/article/details/86673912
今日推荐