JetBrains IDE Setup
整理 CLion 与 PyCharm 的嵌入式、ROS、OpenCV 和代理环境配置
通用设置
运行与调试环境变量
CLion 和 PyCharm 的环境变量入口相同:进入运行 -> 编辑配置,在对应运行配置的环境变量中添加项目所需变量。动态库路径、代理等仅对当前运行配置生效的内容,统一在此处维护。
代理设置
在运行配置的环境变量中添加:
1
2
http_proxy=http://127.0.0.1:7897
https_proxy=http://127.0.0.1:7897
CLion
51 单片机开发
安装插件

通过https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py 下载get-platformio.py文件后使用python运行。随后在设置->语言和框架中设置PlatformIO的路径。
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
编写程序
- 选择芯片

以STC89C52为例
待环境构建完成后(第一次需下载文件有点慢)
在CMakeListsPrivate.txt文件中 
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"

跳转到8051.h头文件中,在开头添加上#include "lint.h"

然后可正常编写程序。
注意,位定义和中断与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支持的芯片类型如下
| stc89 | stc89a | stc12a | stc12b | stc12 | stc15a | stc15 | stc8 | stc8d | stc8g | usb15 |
ROS 1 开发
启动CLion
首先在命令行激活ROS 环境
1
2
catkin_make
source ./devel/setup.zsh
在同一终端下启动 CLion
1
clion .
CLion中打开ROS项目
点击文件->打开并在ROS工作区的src目录中选择CMakeLists.txt,然后选择作为项目打开。
设置build路径
默认情况下,CLion将生成输出放在自动创建的cmake-build-debug或cmake-build-release 目录中。因此需要将CLion构建路径设置为catkin工作区目录。
在文件->设置->构建、执行、部署->CMake中将CMake options修改如下,PATH后面是ROS的devel目录
1
-DCATKIN_DEVEL_PREFIX:PATH=<WORKSPACE_DIRECTORY>/devel
构建目录修改如下,路径是ROS的build目录
1
<WORKSPACE_DIRECTORY>/build
ROS 2 开发
启动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。作为项目打开 
然后在工具->编译数据库->更改项目根选择工作空间作为根目录 
编译工程
在文件->设置->工具->外部工具点击+号,新增一个工具。具体填写内容就是之前编译ROS 2 工作空间的命令。程序填写colcon ,实参填写build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja,工作目录选择ros2的工作空间。 
保存后在工具->外部工具选择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,并将工作目录选择为功能包的构建目录 
3、配置run/debug功能
在添加配置->编辑配置点击+号,选择自定义构建应用程序,在目标选择上一步生成的构建目标,在可执行文件 选择功能包编译出的可执行文件,删除执行前中的构建。 
4、断点调试
在功能包的CMakeLists.txt中添加SET(CMAKE_BUILD_TYPE "Debug")
PyCharm
ROS 开发
PyCharm 在设置项目解释器后默认是没有添加ROS 环境,在设置->文件->项目->Python解释器->python解释器中,选择全部显示
选择最右侧的查看解释器路径
由此可以看出,在PyCharm中没有包含ROS 库,将其添加进解释器路径即可进行ROS 开发
后续使用自定义消息时,同样需要将工作空间内/devel/lib/python3/dist-packages添加进解释器路径
OpenCV 冲突
ROS 安装的 cv_bridge 可能与 pip 安装的 OpenCV 环境发生冲突,导致相关代码运行异常。在通用设置所述的运行配置环境变量中添加:
1
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/ros/noetic/lib




