在Clion中配置项目(十二):编译数据库

对于非CMake和非Gradle项目,您仍然可以从CLion提供的高级IDE功能中受益。一种方法是导入非CMake项目,然后让CLion将其转换为简单的CMake结构。另一种选择是通过加载项目的编译数据库来打开项目。

CLion是一款专为开发C及C++所设计的跨平台IDE。它是以IntelliJ为基础设计的,包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助开发人员在Linux、OS X和Windows上来开发C/C++,同时它还使用智能编辑器来提高代码质量、自动代码重构并且深度整合CMake编译系统,从而提高开发人员的工作效率。感兴趣的朋友欢迎下载试用!CLion现已加入在线订购,点击此处查看价格详情>>

Clion最新试用版

对于非CMake和非Gradle项目,您仍然可以从CLion提供的高级IDE功能中受益。一种方法是导入非CMake项目,然后让CLion将其转换为简单的CMake结构。另一种选择是通过加载项目的编译数据库来打开项目。

使用编译数据库,CLion可以检测项目文件并提取所有必需的编译器信息,例如包含路径和编译标志。这种方法使您可以在IDE中进行操作并获得其功能的完整体验,同时使您的项目独立于CMake或Gradle。

一个编译数据库是一个 JSON命名-格式化文件compile_commands.json 包含有关项目中每个编译单元的结构化数据。

以下代码段显示了JSON编译数据库的示例:

{"directory": "/Users/me/prj/Calendar/","command": "/usr/local/bin/g++-7 -I/Users/me/prj/Calendar/calendars -g -std=c++11 -o calendar_run.dir/main.cpp.o -c /Users/me/prj/Calendar/main.cpp","file": "/Users/me/prj/Calendar/main.cpp"},{"directory": "/Users/me/prj/Calendar/calendars","command": "/usr/local/bin/g++-7 -I/Users/me/prj/Calendar/calendars -g -std=c++11 -o calendars.dir/calendar_defs.cpp.o -c /Users/me/prj/Calendar/calendars/calendar_defs.cpp","file": "/Users/me/prj/Calendar/calendars/calendar_defs.cpp"}

您可以看到称为命令对象的条目数组。每个命令对象代表翻译单元的主文件,工作目录,实际的编译命令(或参数列表),以及可选的由编译步骤创建的输出的名称。

生成编译数据库

要获得项目的编译数据库,您可以使用多种选择:它可以由编译器,构建系统和专用工具生成。以下是一些示例:

CMake

使用CMAKE_EXPORT_COMPILE_COMMANDS 标志。你可以运行

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON…

将以下行添加到您的CMakeLists.txt脚本中:

set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

compile_commands.json 文件将被放入构建目录。

CMAKE_EXPORT_COMPILE_COMMANDS仅由Makefile和Ninja 生成器实现。对于其他生成器,此选项将被忽略。

请注意,NMAKE生成器创建了不正确的编译数据库,这是一个已知问题

Clang(5.0及更高版本):

-Mj 选项写入每个输入文件汇编条目。您可以将其用于项目中的每个文件,然后将输出合并到JSON格式的编译数据库中

Ninja(1.2版及更高版本):

要获取编译数据库,请使用 -t compdb选项。请注意,它需要使用规则名称作为参数:-t compdb rule1 rule2…Ninja构建文件(默认名称build.ninja)中提供了规则列表,例如:

rule cc    command = gcc -c -o $out $in    description = CC $outrule link    command = gcc -o $out $in    description = LINK $out

要在只有一个名为的规则的情况下生成编译数据库cc,请指定:

-t compdb cc > compile_commands.json

但是对于多个规则,您需要从构建文件中获取其确切名称,并将其传递给 compdb

基于Make的项目:

该compiledb发电机工具,Makeup基础构建系统创建编译数据库。

Bear和拦截构建工具:

scan-build 进行Bear和intercept-build是通过在构建过程中拦截编译器调用来帮助您获得编译数据库的工具。

SourceTrail Visual Studio扩展:

SourceTrail Extension 可以为MS Visual Studio解决方案生成一个编译数据库。

在CLion中使用编译数据库

载入专案

为项目创建编译数据库后,可以将其加载到CLion中。导航到文件| 在主菜单上打开,选择compile_commands.json文件或包含该文件的目录,然后单击“ 以项目形式打开”。

结果,检测到项目文件,并且所有命令的状态都在 compile_commands.json显示在“

图标工具Windows工具WindowBuild 构建工具”窗口中:

在Clion中配置项目(十二):编译数据库

项目文件可以位于包含以下内容的目录之外 compile_commands.json。CLion从编译数据库中提取实际路径,并收集项目文件,无论它们位于何处。

现在,CLion的代码洞察力,重构,分析和导航功能可完全用于您的项目。

CLion本机支持JSON文件格式,因此您可以编辑compile_database.json文件直接在IDE中显示,并带有突出显示和代码完成帮助。此外,CLion还会检查您的合规性compile_database.json 文件与编译数据库JSON模式。例如,它会在命令条目中缺少属性或使用错误类型时发出通知:

在Clion中配置项目(十二):编译数据库

更改项目根目录

默认情况下,项目根目录设置为包含编译数据库文件的目录。但是,这并不总是很方便:例如,如果某些项目文件位于目录之外,compile_commands.json(即在项目根目录之外),无论实际的文件夹结构如何,此类文件都会在树中列出。在这种情况下,您需要将项目根目录设置为包含两个目录的父目录compile_commands.json 和项目文件。

要更改项目根目录,请选择“ 工具” |“工具”。编译数据库| 从主菜单更改“项目根目录 ”,并为项目根目录提供其他位置。

自动导入并重新加载项目

为了使您的项目在每次更改时都自动重新加载 compile_command.json,在“设置” /“首选项” |“设置”中设置“ 使用自动导入”复选框。 构建,执行,部署| 编译数据库。如果取消选中此复选框,则在对编译数据库文件进行任何修改后,都会显示一条弹出消息,提示您导入更改:

在Clion中配置项目(十二):编译数据库

您也可以使用“ 工具” | “ 重新加载编译数据库项目”操作。编译数据库菜单可在需要时手动刷新项目。

编译一个文件

尽管CLion尚未实现用于编译数据库项目的构建功能,但是您可能会发现在不构建整个项目的情况下检查单个文件中的更改很有用。为此,CLion提供了“重新编译”操作。它可用于单个源文件和头文件,也可用于项目树中选择的文件组。对于标题,CLion使用resolve上下文来编译包含指定标题的源文件之一。请注意,目录和非C / C ++文件均禁用了重新编译。

要为当前打开的文件调用“重新编译 ”,请选择“ 生成” |“新建”。从主菜单重新编译(或按Ctrl+Shift+F9)。对于项目树中的文件,请使用右键单击菜单中的“重新编译”选项(或按相同的Ctrl+Shift+F9键)。要重新编译几个文件,请在项目树中选择它们,然后使用右键菜单中的Recompile selected files选项Ctrl+Shift+F9。请注意,当用于多个文件时,重新编译将在第一次编译失败时停止。

重新编译文件时,CLion从对应的命令对象中提取必要的信息compile_commands.json:编译命令行(但CLion会抑制输出并删除指定输出文件的标志),以及要使用的编译器。

将目录标记为。

“ 标记目录为”操作也可用于您的编译数据库项目。在项目工具窗口中选择一个目录,右键单击它,然后选择将目录标记为操作。有关用例的描述以及有关CLion如何处理已标记目录的更多详细信息,请参阅“ 控制源,库和排除目录”部分

构建并运行

编译数据库本身缺少构建,运行和调试应用程序所需的数据。但是,可以通过为编译数据库项目添加自定义构建目标并为这些目标创建自定义运行/调试配置来设置工作流程。

=====================================================

更多关于CLion的教程、资源敬请关注我们即将推出的后续教程哦~

想要购买Clion正版授权的朋友欢迎咨询官方客服

JetBrain技术交流群现已开通,QQ搜索群号“786598704或者扫描下方二维码即可加入

在Clion中配置项目(十二):编译数据库
标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年4月24日
下一篇 2020年4月24日

相关推荐

发表回复

登录后才能评论