正确使用CLion打开ROS2程序
之前的操作遇到的问题
我们在之前通过终端创建了一个简单输出的ROS2节点,通过终端运行发现没有问题,但是,后来在用CLion进行代码编辑的时候发现,没有编译器该有的代码补全提示,在网上找了很久,不是省点模式的原因,也不是clang设置的原因,最后发现是打开方式不对。
解决方案
首先,在编译(也就是使用colcon build
)的时候需要加一个参数——CMAKE_EXPORT_COMPILE_COMMANDS
,这个参数是用来生成compile_commands.json文件的,默认不开启,关于这个文件,这个文件通常被放在构建目录中,比如build
目录下,可以通过软链接或复制将其代码放到源代码目录下,其主要作用为代码补全和语法检查以及支持Clang工具链,或者是项目重构和导航。
具体的编译指令为:
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
当然在其他博客中也有提到使用如下指令:
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja
Ninja也是一种编译规则,这里使用的是Cmake,所以不需要额外的-G
参数来指定,(我也试过了,报错主要是)。
编译完成后,会在build
文件夹下构建一个compile_commands.json
文件,
然后打开CLion,文件
|打开
选择该文件,并选择作为项目打开,
这样就打开了文件,当然还需要一步,由于.json是在build
目录下的,所以CLion会把build
目录当作根目录,这里还需要将根目录更改为工作空间,具体操作为:工具
|编译数据库
|更改目录根
,不过貌似更改之后没有提示,所以需要自己多留意一点。
其他构建的方法
在其他博客中有了解到,好像在CmakeLists.txt
中也可以添加指令达到类似的效果。我也去尝试了以下,具体操作如下:
首先我在CLion中安全删除了.json文件,然后在CmakeLists.txt
文件中加入了如下的语句:
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
重新colcon build
发现在build
目录下确实再一次生成了.json文件。