Post

CLion

CLion相关笔记

clion各种开发环境配置

51开发

安装插件

Alt text
通过https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py 下载get-platformio.py文件后使用python运行。随后在设置->语言和框架中设置platformiod的路径。
windows和linux稍有不同
Windows在C:/Users/UserName/.platformio/penv/Scripts/platformio
Linux在~/.platformio/penv/bin/platformio

官网链接:https://docs.platformio.org/en/latest/core/installation/methods/index.html

配置Shell命令

  • Windows在系统环境变量Path附加 C:\Users\UserName.platformio\penv\Scripts
  • Linux可通过在~/.profile中添加
1
export PATH=$PATH:$HOME/.local/bin

然后

1
2
3
ln -s ~/.platformio/penv/bin/platformio ~/.local/bin/platformio
ln -s ~/.platformio/penv/bin/pio ~/.local/bin/pio
ln -s ~/.platformio/penv/bin/piodebuggdb ~/.local/bin/piodebuggdb

或着直接

1
2
3
4
mkdir -p /usr/local/bin
ln -s ~/.platformio/penv/bin/platformio /usr/local/bin/platformio
ln -s ~/.platformio/penv/bin/pio /usr/local/bin/pio
ln -s ~/.platformio/penv/bin/piodebuggdb /usr/local/bin/piodebuggdb

官网链接:https://docs.platformio.org/en/latest/core/installation/shell-commands.html#piocore-install-shell-commands

编写程序

  • 选择芯片

Alt text
STC89C52为例
待环境构建完成后(第一次需下载文件有点慢)
在CMakeListsPrivate.txt文件中 Alt text
windows在include_directories后添加

1
2
include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-sdcc/include")
include_directories("${ENV_HOME_PATH}/.platformio/packages/toolchain-sdcc/non-free/include")

linux在include_directories后添加

1
2
include_directories("$ENV{HOME}/.platformio/packages/toolchain-sdcc/share/sdcc/include")
include_directories("$ENV{HOME}/.platformio/packages/toolchain-sdcc/share/sdcc/non-free/include")

跳转到8052.h头文件中,将#include <8051.h>改为#include "8051.h"并添加#include "lint.h"
Alt text
跳转到8051.h头文件中,在开头添加上#include "lint.h"
Alt text
然后可正常编写程序。
注意,位定义和中断与keil不同!

烧录程序

platformio原生的烧录很慢,改为使用stcgal烧录。
首先,安装stcgal

1
pip install stcgal

然后在platformio.ini添加

1
2
3
4
5
6
upload_flags =
    -P
    stc89a
    -p
    $UPLOAD_PORT
upload_command = stcgal $UPLOAD_FLAGS $SOURCE

即可使用stcgal烧录程序。
写在最后
1.6版本的stcgal因为stc89c52芯片的固件原因有部分芯片会烧录失败,在 https://github.com/nrife/stcgal.git 下载源码后

  • Windows
1
python ./setup.py install
  • Linux
1
sudo ./setup.py install

安装stcgal,同时将stc89改为stc89a
1.8版本的stcgal已添加对不同固件stc8952的支持,可以直接pip安装。

附录

1.8支持的芯片类型如下

stc89stc89astc12astc12bstc12stc15astc15stc8stc8dstc8gusb15

ROS1开发

启动CLion

首先在命令行激活ros环境

1
2
catkin_make
source ./devel/setup.zsh

在同一终端下启动clion

1
clion .

CLion中打开ROS项目

点击文件->打开并在ROS工作区的src目录中选择CMakeLists.txt,然后选择作为项目打开。

设置build路径

默认情况下,CLion将生成输出放在自动创建的cmake-build-debugcmake-build-release 目录中。因此需要将CLion构建路径设置为catkin工作区目录。
文件->设置->构建、执行、部署->CMake中将CMake options修改如下,PATH后面是ROS的devel目录

1
-DCATKIN_DEVEL_PREFIX:PATH=<WORKSPACE_DIRECTORY>/devel

构建目录修改如下,路径是ROS的build目录

1
<WORKSPACE_DIRECTORY>/build

生成器修改为Unix Makefiles
Alt text

###

ROS2开发

启动CLion

1
colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja

此时在build目录下会生成文件compile_commands.json,然后

1
2
source install/setup.zsh
clion .

文件->打开选择工作空间下build文件夹下compile_commands.json。作为项目打开 Alt text

然后在工具->编译数据库->更改项目根选择工作空间作为根目录 Alt text

编译工程

文件->设置->工具->外部工具点击+号,新增一个工具。具体填写内容就是之前编译ros2工作空间的命令。程序填写colcon ,实参填写build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja,工作目录选择ros2的工作空间。 Alt text

保存后在工具->外部工具选择colcon build,此时可以编译整个工作空间。

编译调试功能包

1、创建命令脚本
在功能包下新建一个文件命名为cmake_commands.bat,填写如下内容

1
2
3
/usr/bin/cmake /home/duxinyi/Code/ROS/ROS2/HelloWorld/src/cpp_pubsub -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja -DCMAKE_INSTALL_PREFIX=/home/duxinyi/Code/ROS/ROS2/HelloWorld/install/cpp_pubsub
/usr/bin/cmake --build /home/duxinyi/Code/ROS/ROS2/HelloWorld/build/cpp_pubsub -- -j8 -l8
/usr/bin/cmake --install /home/duxinyi/Code/ROS/ROS2/HelloWorld/build/cpp_pubsub

第一行为构建命令,第一个路径为功能包路径,第二个路径为功能包的安装目录;第二行为编译命令,路径为功能包的构建目录;第三行为安装命令,路径为功能包的构建目录。

2、创建自定义构建目标
文件->设置->构建、执行、部署->自定义构建目标点击+号,新增一个目标。在构建 中添加外部工具,选择功能包下的cmake_commands.bat,并将工作目录选择为功能包的构建目录 Alt text

3、配置run/debug功能
添加配置->编辑配置点击+号,选择自定义构建应用程序,在目标选择上一步生成的构建目标,在可执行文件 选择功能包编译出的可执行文件,删除执行前中的构建。 Alt text

4、断点调试
在功能包的CMakeLists.txt中添加SET(CMAKE_BUILD_TYPE "Debug")

This post is licensed under CC BY 4.0 by the author.