首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用CLion在Docker容器中编码/运行程序?

如何使用CLion在Docker容器中编码/运行程序?
EN

Stack Overflow用户
提问于 2019-03-21 01:26:06
回答 3查看 9K关注 0票数 11

我是CLion的新手

我发现CLion对Docker有支持。我想做以下几点:

代码语言:javascript
复制
(Refer my Linux OS as A.)
(Refer the docker container within A as B.)


The library and environments are set up in B.
The CLion IDE is running in A.
I want to code/debug the program that runs in B using the IDE in A. 

这是CLion支持的功能吗?我看了他们的文件,但我想不出办法

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-29 20:03:47

编辑:在2021.3预览版中,CLion已经构建了对码头的支持。有关详细信息,请参阅 更新答复 .

截至2018年末,远程开发 in CLion非常容易设置。我们所要做的就是设置一个码头集装箱作为我们的“远程主机”。

我使用了https://github.com/shuhaoliu/docker-clion-dev的指南作为参考,并做了一些修改。以下是对我起作用的东西:

(可选)如果没有安装用于CLion的Docker插件,请按这些指示操作。

步骤1- Dockerfile

修改这个Dockerfile以安装项目所需的任何依赖项。将Dockerfile添加到项目中。

代码语言:javascript
复制
FROM ubuntu:cosmic

########################################################
# Essential packages for remote debugging and login in
########################################################

RUN apt-get update && apt-get upgrade -y && apt-get install -y \
    apt-utils gcc g++ openssh-server cmake build-essential gdb gdbserver rsync vim 

RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

# 22 for ssh server. 7777 for gdb server.
EXPOSE 22 7777

RUN useradd -ms /bin/bash debugger
RUN echo 'debugger:pwd' | chpasswd

########################################################
# Add custom packages and development environment here
########################################################

########################################################

CMD ["/usr/sbin/sshd", "-D"]

第2步-码头工人组成

在与前一个docker文件相同的目录中,创建一个docker-come.yaml文件。

代码语言:javascript
复制
# From: https://github.com/shuhaoliu/docker-clion-dev/blob/master/docker-compose.yml

version: '3'

services:
  gdbserver:
    build:
      context: ./
      dockerfile: ./Dockerfile
    image: clion_dev
    security_opt:
      - seccomp:unconfined
    container_name: debug
    ports:
      - "7776:22"
      - "7777:7777"
    volumes:
      - .:/home/debugger/code
    working_dir: /home/debugger/code
    hostname: debug

第三步

确保Dockerfiledocker-compose.yml文件位于同一个目录中。

选项3A (带有CLion Docker插件)

右键单击docker-compose.yml文件并选择Run

一两分钟后,容器应该被创建,并且可以从Clion‘should选项卡上看到。

选项3B (没有CLion Docker插件)

在包含Dockerfiledocker-compose.yml文件的目录中,运行:

代码语言:javascript
复制
docker-compose up -d

步骤4-配置工具链

打开设置->生成、执行、使用->工具链并创建新的远程主机工具链。

凭据字段中,单击右侧的小文件夹,然后输入在Dockerfile中创建的调试器用户的凭据。

在上面的例子中,用户名是“调试器”,密码是"pwd“。

步骤5- CMake配置文件

现在,我们必须设置一个CMake配置文件来利用我们新的远程主机工具链。

导航到设置-> Build、Execution、Deplyment -> Cmake并创建一个新配置文件。唯一必要的更改是选择在前一步中创建的工具链。

步骤6-运行/调试程序

在CMake选项卡中,确保选择了新创建的CMake配置文件。

在CMake项目加载到容器中之后,您应该能够在CLion右上角的run配置开关中选择要使用的CMakeProfile。

希望如果一切顺利的话,您现在应该能够在docker容器中运行和ebug代码了!

如果事情没有完全按照计划进行,这里有一些参考资料帮助我把事情做好:

票数 25
EN

Stack Overflow用户

发布于 2021-12-09 03:03:10

在CLion 2021.3 EAP中,有一个内置码头工具链

直接取自CLion博客文章

  1. 转到“设置/首选项”,“生成”,“执行”,“部署”工具链。
  2. 添加一个新的工具链,选择Docker类型。
  3. 创建一个停靠服务器,并在工具链设置中选择它。
  4. 选择一个可用的码头形象。

现在您可以使用这个Docker工具链创建CMake配置文件:

有关如何在不同平台上设置和优化对接工具链的更多细节和技巧,请查看博客全文

票数 3
EN

Stack Overflow用户

发布于 2020-01-20 08:37:55

这可能不是很正常的方法,但实际上您可以在码头容器中运行CLion本身。如果解析您的代码库需要一些库(您只在docker中,而不是在您的系统上),这可能是有用的(我这样做是为了使用ROS)。另外,您不需要处理“远程开发”长时间加载和同步时间,调试器也可以“开箱即用”。

此类设置的示例可以找到这里

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55272484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档