基于CLion远程开发

简介

本文介绍基于docker和projector搭建一套c++的开发环境,提升研发效率问题。大多数c++服务是运行在linux平台的,代码也只能在linux上编译,但大部分开发者使用的是macbook或者thinkpad,很少用linux开发。开发环境、编译运行环境两边代码同步影响研发效率。
隔壁的vscode通过remote插件,支持远程开发模式,一定程度上提升了研发效率。
年初Jetbrains开源的projector_install项目,旨在让IDE运行在服务端,然后本地通过网络与其交互。
本文将介绍这个环境的搭建。

环境搭建

有vps或者linux开发机的同学,可以参考dockerfile进行安装。没有vps或
者linux开发机的同学,可以在macbook或者thinkpad上安装一个docker,然后使用下面dockerfile进行安装。
Dockerfile内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
FROM centos:8

# 基本开发环境
RUN dnf install -y gcc-c++ cmake make git sudo; \
dnf clean all; \
rm -rf /var/cache/dnf/*

# python环境
RUN dnf install -y python3 python3-pip python3-pyOpenSSL python3-cryptography \
less libXext libXrender libXtst libXi freetype; \
dnf clean all; \
rm -rf /var/cache/dnf/*

# 创建用户及目录
RUN useradd -b /home -m -s /bin/bash work
WORKDIR /home/work
RUN usermod -a -G wheel work
RUN echo "work:work"|chpasswd
USER work

# 安装projector和conan
## 更新pip
RUN python3 -m pip install -U pip --user; pip3 cache purge;
## 安装projector_install和conan
RUN pip3 install projector-installer conan --user; pip3 cache purge;
## 手工初始化目录,否则启动的时候需要协议确认
RUN mkdir -p .projector/apps .projector/cache .projector/configs
## 安装IDE
RUN .local/bin/projector autoinstall --config-name CLion --ide-name "CLion 2021.2.3" --port 9999; \
rm .projector/cache/*

# 暴露端口号
EXPOSE 9999

ENTRYPOINT [ "/home/work/.local/bin/projector", "run", "CLion" ]

然后执行下面命令进行镜像构建及推送:

1
2
docker build -t phantom9999/projector:v1 .
docker push phantom9999/projector:v1

最后执行下面的命令启动容器:

1
docker run -d -p 9999:9999 phantom9999/projector:v1

懒得自己构建镜像的同学,可以直接从docker hub上拉对应的镜像(虽然有点大):

1
docker pull phantom9999/projector:v1

Jetbrains也提供了对应的镜像(系统是ubuntu的),可以在docker hub上找到

环境使用

在jetbrains的网站上找到projector工具,下载native app,然后连接上云端的CLion即可。

projector貌似是专门优化的windows,在windows上操作无误,但是在mac系统上,稍稍有点小问题。

参考

本文使用的代码及命令可以在github的代码库上找到。