威尼斯www.9778.com-威尼斯正版官方网站

Visual Studio支持用C++写Linux程序了,网友:果然最牛IDE - Visual Studio 15,Visual Studio 2016 - IT之家

日期:2020-03-21编辑作者:服务器&运维

如今我们正在开发一个新的插件,一个能够让开发者在 Visual Studio (以下简称 VS ) 上建构能够在 Linux 上运行 C++ 程序的套件。开发者可以借由这个插件将 C++ 程序移转到 Linux 服务器、PC 以及移动设备上,也同时可以借由这个插件将这些机器连结至你的 VS 上。

微软今天在官方MSDN博客上发文表示他们正在开发一个新的插件,一个能够让开发者在Visual Studio上建构能够在Linux上运行C++程序的套件。开发者可以借由这个插件将C++程序移植到Linux服务器、PC以及移动设备上,也同时可以借由这个插件将这些设备连接至VS。看到这个消息,网友纷纷表示,Visual Studio果然是宇宙第一IDE!

VS 将会自动地复制一份并在远端建构你的来源档,再运行带有除错器的应用程序。我们的这项计划也针对特殊的架构提供系统支持,包含 ARM 等。

微软还在博客中详细介绍了该项目的使用方法,感兴趣可阅读如下原文

下方文章将继续介绍使用我们这套全新的 Linux 计划。

目前我们仅支持在远端的目标Linux机器提供建构服务。我们并没有限制特定的Linux发布版本,但我们仍旧在一些工具的表现上有些相依性的差异。需要特别注意的是,我们需要openssh-server、g++、gdb以及gdbserver。用你最习惯的套件管理工具来安装他们,例如在Debian类型的Linux就可以使用:

目前我们仅支持在远端的目标 Linux 机器提供建构服务。我们并没有限制特定的 Linux 发布版本,但我们仍旧在一些工具的表现上有些相依性的差异。需要特别注意的是,我们需要 openssh-server、g++、gdb 以及 gdbserver。用你最习惯的套件管理工具来安装他们,例如在 Debian 类型的 Linux 就可以使用:

sudo apt-get install openssh-server g++ gdb gdbserver

sudo apt-get install openssh-server g++ gdb gdbserver

安装

安装

下载 Visual C++ for Linux Development extension 或从 Visual Studio 上的插件管理员来获得。目前我们在 Visual Studio 上的 Android Tools 上已有相依支持。如果你已经安装了 VS 的话,你可以借由 Add Remove Programs 来新增这些功能,编辑 VS 然后在 Visual C++ 移动设备开发下选择他们。

要开始一个新的项目可以透过以下路径:Templates > Visual C++ > Cross Platform > Linux。

图片 1

目前我们有三个可以使用的模板:针对像 Raspberry Pi 等物联网装置设计的 Blink、最基本的应用程序样板 Console Application 以及让开发者自己选择需要加入的来源档以及从预设设定起的 Empty。

下载Visual C++ for Linux Development extension或从Visual Studio上的插件管理员来获得。目前我们在Visual Studio上的Android Tools上已有相依支持。如果你已经安装了VS的话,你可以借由Add Remove Programs来新增这些功能,编辑VS然后在Visual C++移动设备开发下选择他们。

你的第一个 VS Linux 项目

我们从建构一个主控台 app 开始。从模板新增完你的项目后,在 printf 叙述句的地方设下一个中断点,然后敲击 F5 或远端 GDB 除错器按钮。根据预设值,这个主控台 app 设定与 debug/x64 的环境相容。如果你的远端连线标的是 x86 或 arm 架构,那你需要先改变上述设定。在我演示的这个范例我使用的是 x64 Ubuntu VM。

图片 2

由于这是第一次连结到标的的 Linux 机器,所以会弹出一个连接资讯视窗,是由在建构项目时所触发的。

图片 3

我们同时支持密码以及认证形式的验证方式,包含使用复杂密码的认证。在第一次成功连接后,我们会将你的连结资讯储存以便在日后需要连接时快速存取。你可以从 Tools > Options > Cross Platform > Linux 的路径来管理你已储存的连结资讯,以及是的,密码/复杂密码是已加密形式储存的。我们也同时计划在未来的更新版本中,在连接时无需储存连结资讯。

在连接的过程中,你的来源档会被复制到远端的 Linux 机器上,并触发 gcc 并根据项目的属性设定来建构原始码。在项目建构完毕之后,你的程序将会在远端的机器上执行,并停止在我们先前所设下的中断点上。

要开始一个新的项目可以透过以下路径:Templates > Visual C++ > Cross Platform > Linux。

Linux 项目属性

我们可以借由以下的项目属性来理解,东西是怎么被部署到远端 Linux 机器上的。

图片 4

在 remote settings 下,你可以看到 remote 根目录是预设在 ~/projects/ ,且该路径下的远端项目目录会与我们的项目名称相符。从 Linux 机器上去看的话,我们可以在 ~/projects/ConsoleApplication1 下发现建构后的成品 main.cpp。

图片 5

根据项目的 General setting,可以了解到我们针对 Output 以及 Intermediate 路径是怎么设定的。除此之外,你可以发现到这个项目是被设定成一个应用程序的 — 代表我们的项目执行档 ConsoleApplication1.out 是在 bin/x64/Debug/ 路径下。另外可以注意到的是,我们也同时支持静态以及动态的设定格式。

目前我们有三个可以使用的模板:针对像Raspberry Pi等物联网装置设计的Blink、最基本的应用程序样板Console Application以及让开发者自己选择需要加入的来源档以及从预设设定起的Empty。

Linux 物联网项目

现在我们来研究物联网装置的部分 — 以 Raspberry Pi 为例。你可以使用任何类型的 Pi 来执行 Raspbian。在我们的 Blink 范例里我们使用 wiringPi — 如果你没有这个安装选项你也可以选择从 apt 或来源档来安装。在 Tools > Options 搜寻 Linux 来新增一个连结,然后点击 “add” 来新增一个连结到你的 Raspberry Pi。

图片 6

从项目属性设定的地方查看 Build Events 下的 Remote Post-Build Events。

图片 7

你可以借由这个设定在远端已建构好项目的 Linux 标的上执行指令。这个模板已先预设了针对 LED 输出的 GPIO pin,所以我们不需要再以 root 的身份执行我们的执行档。

现在将一个 LED 连接到 Raspberry Pi 上的 pin 17 位置(如下图)。

图片 8

打开 main.cpp 档,并在第一个 digitalWrite 后 delay call 的地方设下中断点,然后敲击 F5。你可以看到你的 LED 灯亮起,且执行程序会在你下中断点的地方停住。将你的程序持续执行到下一个 digitalWrite call 之后便可以看到 LED 灯熄灭。

可以透过浏览我们的物联网研发专页,来追踪所有我们目前针对这样的系统所释出的功能。

你的第一个VS Linux项目

桌面应用程序

我们刚已在上述的文章中,介绍了无介面 (headless) 以及装置型的 Linux 应用程序,那桌面型的呢?在这里我们将介绍一点特别的:我们将在 Linux 桌面上执行一个 OpenGL 应用程序。首先要确定的是,你的 Linux 桌面已经设定为包含 OpenGL 的环境,下述是我们会需要用到的 apt 套件:libgles1-mesa、libgles1-mesa-dev、freeglut3 以及 freeglut3-dev。

接下来请先创建一个空的 Linux 项目,然后前往  Julien Guertault’s OpenGL 教学下载旋转方块的来源档,将其解压缩并将 main.c 加到你的项目下。要能够运行 Intellisense,你需要将 OpenGL 的标头 (headers) 新增到 VC++ Directories,你可以从 OpenGL Registry 里下载他们。现在前往你的项目属性设定,然后新增 export DISPLAY=:0.0 到 Pre-Launch command 下。

图片 9

然后,在 Linker Input 下新增 “m;GL;GLU;glut” 到 Library Dependencies 栏位。

另外,确认你的远端设定是对应到对的机器。

图片 10

接下來按下 F5。

图片 11

还有一些有趣值得下中断点的地方,例如大约在 80 行左右的位置有可以调整方块旋转的设定(试着调整看看 alpha 值),或在 KeyboardFunc 里可以检查按下键盘时所输入的值。

我们从建构一个主控台app开始。从模板新增完你的项目后,在printf叙述句的地方设下一个中断点,然后敲击F5或远端GDB除错器按钮。根据预设值,这个主控台app设定与debug/x64的环境相容。如果你的远端连线标的是x86或arm架构,那你需要先改变上述设定。在我演示的这个范例我使用的是x64 Ubuntu VM。

开始实做原生的 Linux 应用

我们期望您与我们对于这些新开放的可能拥有一样的期待。

安装  Visual C++ for Linux Development extension,尝试看看并告知我们哪些是你可以成功运行,以及哪些是你遇到的阻碍或遭遇任何问题。如果你有兴趣的领域是在物联网的部分的话,可以前往关注我们的 IoT Development page 以获取最新资讯。你可以借由这个部落格,或展览页的额外分页、VS 回馈频道以及 Twitter 上的  @visualc、@robotdad 或我的帐号联系到我们。

由于这是第一次连结到标的的Linux机器,所以会弹出一个连接资讯视窗,是由在建构项目时所触发的。

我们同时支持密码以及认证形式的验证方式,包含使用复杂密码的认证。在第一次成功连接后,我们会将你的连结资讯储存以便在日后需要连接时快速存取。你可以从Tools > Options > Cross Platform > Linux的路径来管理你已储存的连结资讯,以及是的,密码/复杂密码是已加密形式储存的。我们也同时计划在未来的更新版本中,在连接时无需储存连结资讯。

在连接的过程中,你的来源档会被复制到远端的Linux机器上,并触发gcc并根据项目的属性设定来建构原始码。在项目建构完毕之后,你的程序将会在远端的机器上执行,并停止在我们先前所设下的中断点上。

Linux项目属性

我们可以借由以下的项目属性来理解,东西是怎么被部署到远端Linux机器上的。

在remote settings下,你可以看到remote根目录是预设在~/projects/,且该路径下的远端项目目录会与我们的项目名称相符。从Linux机器上去看的话,我们可以在~/projects/ConsoleApplication1下发现建构后的成品main.cpp。

根据项目的General setting,可以了解到我们针对Output以及Intermediate路径是怎么设定的。除此之外,你可以发现到这个项目是被设定成一个应用程序的—代表我们的项目执行档ConsoleApplication1.out是在bin/x64/Debug/路径下。另外可以注意到的是,我们也同时支持静态以及动态的设定格式。

Linux物联网项目

现在我们来研究物联网装置的部分—以Raspberry Pi为例。你可以使用任何类型的Pi来执行Raspbian。在我们的Blink范例里我们使用wiringPi—如果你没有这个安装选项你也可以选择从apt或来源档来安装。在Tools > Options搜寻Linux来新增一个连结,然后点击“add”来新增一个连结到你的Raspberry Pi。

从项目属性设定的地方查看Build Events下的Remote Post-Build Events。

你可以借由这个设定在远端已建构好项目的Linux标的上执行指令。这个模板已先预设了针对LED输出的GPIO pin,所以我们不需要再以root的身份执行我们的执行档。

现在将一个LED连接到Raspberry Pi上的pin 17位置。

打开main.cpp档,并在第一个digitalWrite后delay call的地方设下中断点,然后敲击F5。你可以看到你的LED灯亮起,且执行程序会在你下中断点的地方停住。将你的程序持续执行到下一个digitalWrite call之后便可以看到LED灯熄灭。

可以透过浏览我们的物联网研发专页,来追踪所有我们目前针对这样的系统所释出的功能。

桌面应用程序

我们刚已在上述的文章中,介绍了无介面以及装置型的Linux应用程序,那桌面型的呢?在这里我们将介绍一点特别的:我们将在Linux桌面上执行一个OpenGL应用程序。首先要确定的是,你的Linux桌面已经设定为包含OpenGL的环境,下述是我们会需要用到的apt套件:libgles1-mesa、libgles1-mesa-dev、freeglut3以及freeglut3-dev。

接下来请先创建一个空的Linux项目,然后前往Julien Guertault’s OpenGL教学下载旋转方块的来源档,将其解压缩并将main.c加到你的项目下。要能够运行Intellisense,你需要将OpenGL的标头新增到VC++ Directories,你可以从OpenGL Registry里下载他们。现在前往你的项目属性设定,然后新增export DISPLAY=:0.0到Pre-Launch command下。

然后,在Linker Input下新增“m;GL;GLU;glut”到Library Dependencies栏位。

另外,确认你的远端设定是对应到对的机器。

还有一些有趣值得下中断点的地方,例如大约在80行左右的位置有可以调整方块旋转的设定,或在KeyboardFunc里可以检查按下键盘时所输入的值。

本文由威尼斯www.9778.com发布于服务器&运维,转载请注明出处:Visual Studio支持用C++写Linux程序了,网友:果然最牛IDE - Visual Studio 15,Visual Studio 2016 - IT之家

关键词:

如何在 Linux 上配置持续集成服务

6. 配置 SMTP 服务器 如果我们想让 drone 使用 email 发送通知,那么我们需要在 SMTP配置里面设置我们的 SMTP 服务器。如果...

详细>>

Linux内存寻址之分段机制

段描述符表 各种各样的用户描述符和系统描述符,都放在对应的全局描述符表、局部描述符表和中断描述符表中。描...

详细>>

10个方法助你轻松完成 Linux 系统恢复

你是不是经常希望做过的每一件事情都加上一个“撤销”按钮呢? 10种linux下磁盘快照方式恢复系统 导读 大家都知道...

详细>>

Linux 性能优化之 IO 子系统

本文介绍了对 Linux IO 子系统性能进行优化时需要考虑的因素,以及一些 IO性能检测工具。 文件系统优化 ** 动态调整...

详细>>