英德住房和城乡建设部网站,哪个装修公司比较好,建筑设计师要学什么专业,最新办公室设计有一个使用了 Epoll 的 C 项目#xff0c;笔者平时用的 Linux 主力开发机不在身边#xff0c;想在 macOS 上开发调试#xff0c;但是没有 Linux 虚拟机。恰好#xff0c;JetBrains CLion 的 Toolchains 配置除了使用本地环境#xff0c;还支持 SSH、Docker。
笔者使用 CL…有一个使用了 Epoll 的 C 项目笔者平时用的 Linux 主力开发机不在身边想在 macOS 上开发调试但是没有 Linux 虚拟机。恰好JetBrains CLion 的 Toolchains 配置除了使用本地环境还支持 SSH、Docker。
笔者使用 CLion Docker Desktop不到十分钟就能在 macOS 上搭建一个能够开发使用 Linux 类库的 C 项目的开发环境而且具备不错的开发体验。 文章目录 准备 Docker 环境构建一个包含项目所需依赖的 Image准备 Dockerfile 并安装所需依赖构建 Image CLion 配置 ToolchainsToolchains 添加 Docker 环境CMake 项目选择刚才添加的 Docker Toolchain 开发体验头文件导航直接运行调试运行 【更新】CLion Debug 控制台没有日志 准备 Docker 环境
macOS 使用 Docker Desktop 即可本文不赘述。 当然Docker 环境也可以不在本地可以通过 TCP 或者 SSH 连接非本地 Docker 环境。 构建一个包含项目所需依赖的 Image
准备 Dockerfile 并安装所需依赖
笔者的主力开发机是 Ubuntu 22.04选择相同的系统作为基础镜像。 镜像构建按照项目所需依赖即可。以下是搭建一个最基本的 C/C 环境的 Dockerfile。
FROM ubuntu:22.04
MAINTAINER wuweijieapache.org
RUN apt update apt install -y cmake g gdb提示如果所在环境无法加速访问 Ubuntu 官方 apt 源建议使用国内 apt 源。 将 sources.list 覆盖基础镜像中原有的 sources.list。
FROM ubuntu:22.04
MAINTAINER wuweijieapache.org
ARG TARGETARCH
COPY $TARGETARCH/sources.list /etc/apt/sources.list
RUN apt update apt install -y cmake g gdb构建 x86/64 架构的环境可以使用以下 sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse构建 aarch64 及其他架构的环境可以使用以下 sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse
# deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse构建 Image docker build -t teslacn/cmake:1.0 .
[] Building 16.4s (8/8) FINISHED [internal] load build definition from Dockerfile 0.0s transferring dockerfile: 37B 0.0s [internal] load .dockerignore 0.0s transferring context: 2B 0.0s [internal] load metadata for docker.io/library/ubuntu:22.04 16.3s [1/3] FROM docker.io/library/ubuntu:22.04sha256:f154feaf13b51d16e 0.0s [internal] load build context 0.0s transferring context: 65B 0.0s CACHED [2/3] COPY arm64/sources.list /etc/apt/sources.list 0.0s CACHED [3/3] RUN apt update apt install -y cmake g gdb 0.0s exporting to image 0.0s exporting layers 0.0s writing image sha256:b4ad8d6c3284e79dedcf8c628b1a89c0bb59d29000 0.0s naming to docker.io/teslacn/cmake:1.0 0.0sCLion 配置 Toolchains
Toolchains 添加 Docker 环境
选择构建好的镜像即可CLion 会自动检测构建工具、编译器、GDB 版本。
CMake 项目选择刚才添加的 Docker Toolchain 开发体验
头文件导航
CLion 自动将容器中的 Linux 头文件缓存在了本地从代码中能够直接导航到 sys/epoll.h 文件使用起来和直接在 Linux 环境开发没有区别。
直接运行
与平时本地运行相比完全没有差异。
调试运行
调试运行发现除了程序的日志没有打出到 stdout 以外其他调试功能和本地调试完全没有差异。 以上即环境搭建的过程与结果。
【更新】CLion Debug 控制台没有日志
解决方法
setbuf(stdout, 0);https://stackoverflow.com/questions/47776094/clion-wont-show-output-in-debug