文章目录
前言
如果你用的是2020的版本,已经不需要按照我这篇文章去配置了。可以参考这篇官方博客的这篇文章Tips & Tricks: Develop OpenJDK in CLion with Pleasure
以下是原文
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项目
- 生成Makefile
如果项目本身就是Makefile,不需要再生成。如果是开源项目,往往需要生成Makefile。 - 从Makefile生成compile_commands.json
$ compiledb -nf make
- 使用CLion打开该项目
打开该项目后,CLion将检测该compile_commands.json文件并查看其项目信息。您可能会在几秒钟内看到它,然后在“Build”工具窗口中显示“Compiler Info”选项卡,告诉您所有内容都已完成(您可以在“Sync”选项卡中看到任何错误或警告) )。
- 测试是否建立索引成功
打开一个源码文件,如果上一步没有错误的话,你应该会看到代码已经着色了,并且可以声明和定义之间跳转了,一切跟你打开CMake项目一样 - 监听Makefile修改,自动生成compile_commands.json
如果每次修改完都要手动运行生成compile_commands.json的命令,这就太不程序员了。而且种没有意义的操作,还是自动化的好。需要安装下面两个CLion Plugin:File Watchers, Makefile support
安装完成并重启后,就可以配置对makefile的监听了。按下图配置即可
调试Makefile项目
完成了上面的步骤,你只能做一些代码编辑的工作,这样是不够的,我们还需要编译调试。下面就介绍如何编译调试
- 在项目根目录新建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项目上开发,编译并调试了。
以下是调试界面截图