用VisualStudio在Linux DOCKER容器中构建C++应用程序

Docker容器为构建、测试和部署提供了一致的开发环境。虚拟化操作系统、文件系统、环境设置、库和其他依赖项都被封装并作为一个映像提供,可以在开发人员和机器之间共享。对于C++跨平台开发人员来说,这是非常有用的,因为您可以针对运行不同于您开发机器上的操作系统的容器。

null

在本文中,我们将使用visualstudio的原生CMake支持,通过SSH在Linux docker容器中构建一个简单的Linux应用程序。本文主要介绍如何从visualstudio创建第一个docker容器和构建。如果您有兴趣了解更多关于Docker作为配置可复制构建环境的工具的信息,请查看我们在 使用多级容器进行C++开发。

此工作流利用了visualstudio对CMake的本机支持,但是可以使用相同的指令来构建 visualstudio中基于MSBuild的Linux项目 .

设置您的第一个Linux docker容器

首先,我们将在Windows上设置一个Linux docker容器。您需要下载 适用于Windows的Docker桌面客户端 如果你还没有创建docker帐户。看到了吗 在Windows上安装Docker Desktop 有关下载信息、系统要求和安装说明。

我们先把 Ubuntu操作系统 运行一些命令。从Windows命令提示符运行:

> docker pull ubuntu

这将从Docker下载Ubuntu的最新图片。您可以通过运行以下命令查看docker图像的列表:

> docker images

图片[1]-用VisualStudio在Linux DOCKER容器中构建C++应用程序-yiteyi-C++库

接下来,我们将使用Dockerfile根据Ubuntu的本地映像创建一个自定义映像。Dockerfiles包含用于组装映像的命令,并允许您从任何计算机自动复制相同的构建环境。看到了吗 Dockerfile引用 有关编写自己的Dockerfiles的更多信息。以下Dockerfile可用于安装VisualStudio的 所需的生成工具 并配置SSH。CMake也是必需的依赖项,但我将部署 静态链接的二进制文件 在后面的步骤中直接从visualstudio。使用您喜爱的文本编辑器创建一个名为“Dockerfile”的文件,其中包含以下内容。

# our local base image
FROM ubuntu 

LABEL description="Container for use with Visual Studio" 

# install build dependencies 
RUN apt-get update && apt-get install -y g++ rsync zip openssh-server make 

# configure SSH for communication with Visual Studio 
RUN mkdir -p /var/run/sshd

RUN echo 'PasswordAuthentication yes' >> /etc/ssh/sshd_config &&  
   ssh-keygen -A 

# expose port 22 
EXPOSE 22

那我们就可以了 树立形象 基于我们的Dockerfile,从保存Dockerfile的目录运行以下命令:

> docker build -t ubuntu-vs .

下一步,我们可以 运行容器 源自我们的形象:

> docker run -p 5000:22 -i -t ubuntu-vs /bin/bash

p标志用于向主机公开容器的内部端口。如果此步骤成功,则应自动附加到正在运行的容器。您可以随时停止docker容器,并使用 出口 命令。要重新连接,请运行 码头工人ps-a , 码头工人开始 ,和 码头工人附加 从命令提示符。

最后,我们将直接与docker容器交互以启动SSH,并创建一个用户帐户以用于SSH连接。注意,如果希望避免任何手动和特定于容器的配置,还可以启用root登录并从Dockerfile启动SSH。将替换为要使用并运行的用户名:

> service ssh start
> useradd -m -d /home/<user-name> -s /bin/bash -G sudo <user-name>
> passwd <user-name>

m和-d标志使用指定的主目录创建用户,-s标志设置用户的默认shell。

现在可以从VisualStudio连接到容器了。

从VisualStudio连接到docker容器

一定要有 Visual Studio 2019 以及 用C++工作负载开发Linux 安装。

打开VisualStudio2019创建新的CMake项目。CMake是跨平台的,允许您将应用程序配置为在Windows和Linux上运行。

加载IDE后,您可以像添加其他任何连接一样,向Linux docker容器添加SSH连接 远程连接 . 导航到连接管理器(工具>选项>跨平台>连接管理器),然后选择“添加”以添加新的远程连接。

Add a new remote connection in Visual Studio, with input fields for host name, port, user name, authentication type, and password.

您的主机名应该是“localhost”,端口应该是您用于SSH连接的任何端口(在本例中,我们使用5000),并且您的用户名和密码应该与您刚刚为容器创建的用户帐户匹配。

在Visual Studio中配置内部版本

此时,该项目的行为与visualstudio中的任何其他CMake项目一样。要在Linux容器中配置和构建控制台应用程序,请导航到“配置”下拉列表中的“管理配置…”。 图片[3]-用VisualStudio在Linux DOCKER容器中构建C++应用程序-yiteyi-C++库

然后可以在CMake设置编辑器中选择绿色加号,以添加新的“Linux调试”配置。确保您的Linux配置的远程机器名与我们为Linux docker容器创建的远程连接匹配。

Remote machine name property in the CMake Settings Editor showing the local docker container I am connected to

保存CMake设置编辑器(ctrl+s)并从配置下拉列表中选择新的Linux配置以启动CMake配置。如果docker容器上尚未安装CMake,则VisualStudio将提示您部署 静态链接的二进制文件 作为配置步骤的一部分,直接连接到远程连接。

此时,您可以直接从visualstudio在Linux docker容器中构建应用程序。可以在中配置其他生成设置(包括自定义工具链文件、CMake变量和环境变量) CMake设置编辑器 . 潜在的 CMakeSettings.json文件 可以存储多个生成配置,并且可以签入源代码管理并在团队成员之间共享。

下一个

这篇文章向您展示了如何在VisualStudio中在Linux DOCKER容器中构建C++应用程序。请继续关注我们的下一篇文章,我们将在哪里向您展示如何将构建工件复制回本地Windows机器,并在第二个远程系统上使用gdbserver进行调试。

给我们你的反馈

您对我们的Linux工具或visualstudio中的CMake支持有反馈吗?我们很乐意收到您的来信,帮助我们确定优先级并为您构建合适的功能。我们可以通过以下评论联系到您, 开发者社区 ,电子邮件( visualcpp@microsoft.com 还有推特 视觉 (二)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享