使用 Visual Studio 2019 远程开发 Linux 程序

环境

  1. 安装 Visual Studio 2019
  2. 安装有 gcc gdb OpenSSH 的 Linux 远程服务器

安装 VS 2019

安装 VS 2019 时,必须要勾选 "使用 C++ 的 Linux 开发" 工具集


使用 Visual Studio 2019 远程开发 Linux 程序_第1张图片

创建 Linux 项目

创建一个类型为 Linux 的 控制台应用程序 的解决方案。

使用 Visual Studio 2019 远程开发 Linux 程序_第2张图片

项目配置

若要查看配置选项,请选择 "项目" > "属性" 菜单,或在 "解决方案资源管理器" 中右键单击相应项目,然后从上下文菜单中选择 "属性" 。

VC++ 目录设置

转到 "配置属性" > "VC++ 目录" 然后设置 "包含目录"。

由于本地 Windows 系统并不包含 Linux 系统相应的头文件,因此要在此设置远程 Linux 系统头文件的目录。此项设置不影响编译过程 (因为编译过程在远程 Linux 进行,因此即使本地不含有 Linux 头文件,也不影响在 Linux 上的编译过程),但会影响 VS 的 IntelliSense。(代码提示)

设置此项后,VS 会从远程 Linux 服务器自动下载此项所定义的包含目录内的头文件到本地缓存中,这样在本地编写 Linux 程序时即可使用 VS 提供的代码提示功能。

在 305 的服务器上,此项具体配置为:

/usr/include;/usr/local/include;/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/include/x86_64-linux-gnu;

使用 Visual Studio 2019 远程开发 Linux 程序_第3张图片

附加包含目录设置

转到 "配置属性" > "C/C++" > "常规" 然后设置 "附加包含目录"。

附加包含目录: 指定要添加到包含路径的一个或多个目录。使用分号来分隔多个目录。 (-I[path])。

这个是远程主机上的路径,相当于 gcc 编译时指定 "-I[路径]" 选项。

如果项目依赖第三方库,则需要将第三方库的头文件目录加入其中。

另外,若需要 VS 对这些目录中的头文件进行代码提示,则需要同时把这些目录添加到之前所述的 "VC++ 目录" 属性中的包含目录中。

使用 Visual Studio 2019 远程开发 Linux 程序_第4张图片

附加库目录设置

转到 "配置属性" > "连接器" > "常规" 然后设置 "附加库目录"。

附加库目录: 允许用户重写环境库路径。(-L [文件夹])。

这个是远程主机上的路径,相当于 gcc 编译时指定 "-L[路径]" 选项,用于指定引用动态库和静态库的目录。

如果项目依赖第三方库,则需要将第三方库的库目录加入其中。

使用 Visual Studio 2019 远程开发 Linux 程序_第5张图片

库依赖项设置

转到 "配置属性" > "连接器" > "输入" 然后设置 "库依赖项" 和 "附加依赖项"。

库依赖项: 此选项可指定要添加到链接器命令行的附加库。 会将其他库添加到前缀为 "lib" 和结尾扩展名为 ".a" 的链接器命令行的末尾。 (-l[FILE])

相当于 gcc 设置 "-l[库名称]" 选项,用于指定链接时所需要的动态库和静态库名称。如果找不到依赖的库文件,链接时会错误,显示 "无法解析的符号"。

添加依赖库项时,只需要将库文件名的前缀 lib 和后缀 .a / .so 去掉。如 libtcmalloc.so, 去掉lib, .so, 填写 tcmalloc 即可。

附加依赖项: 指定要添加到链接命令行的附加项。

填写附加依赖项的路径和库文件全名。

使用 Visual Studio 2019 远程开发 Linux 程序_第6张图片

C++ 语言标准设置

转到 "配置属性" > "C/C++" > "语言" 然后设置 "C++ 语言标准"。

选择合适的 C++ 标准:C++17。

使用 Visual Studio 2019 远程开发 Linux 程序_第7张图片

有关更多项目配置属性的信息,请参阅微软官方文档:

Linux 项目属性页参考

添加远程环境

有了远程环境我们才能同步头文件或者进行调试运行。

在第一次编译或调试你的项目时 VS 会自动让你连接远程环境,当然,我们推荐在 "调试" > "选项" > "跨平台" > "连接管理器" 中进行设置:

  1. 在 Visual Studio 中,依次选择菜单栏上的 "工具" > "选项" ,以打开 "选项" 对话框。 然后,依次选择 "跨平台" > "连接管理器" ,以打开 "连接管理器" 对话框。

    如果你以前没有在 Visual Studio 中设置过连接,Visual Studio 会在你首次生成项目时,为你打开 "连接管理器" 对话框。

  2. 在 "连接管理器" 对话框中,选择 "添加" 按钮,以添加新连接。

    在任一场景中,均会显示“连接到远程系统”窗口 。使用 Visual Studio 2019 远程开发 Linux 程序_第8张图片

  3. 输入以下信息:

    表 1 远程连接信息
    条目 描述
    主机名 目标设备的名称或 IP 地址
    端口 运行 SSH 服务的端口,通常为 22
    用户名 要进行身份验证的用户
    身份验证类型 同时支持密码和私钥
    密码 输入的用户名的密码
    私钥文件 为 ssh 连接创建的私钥文件
    密码 与上面选择的私钥一起使用的密码

登录成功后这个连接就添加完成了。

使用 Visual Studio 2019 远程开发 Linux 程序_第9张图片

远程系统上标头的 IntelliSense (代码提示)

管理器下面还有一个远程标头管理器的设置项,用来同步头文件。
在连接管理器中添加新连接时,Visual Studio 会自动为远程系统上的编译器检测包含目录。 随后 Visual Studio 压缩这些文件,并将其复制到本地 Windows 计算机上的目录中。 此后,每当在 Visual Studio 或 CMake 项目中使用该连接时,都会使用这些目录中的标头来提供 IntelliSense。

若要管理标头缓存,导航到 "工具" > "选项",依次选择 "跨平台" > "连接管理器" > "远程标头 IntelliSense 管理器" 。 若要在更改 Linux 计算机后更新标头缓存,请选择远程连接,然后选择 "更新"。 选择 "删除",来删除标头但不删除连接本身。 选择 "浏览",打开 "文件资源管理器" 中的本地目录 。 将此文件夹视为只读文件夹。 要下载在 Visual Studio 2017 版本 15.3 之前创建的现有连接的标头,请选择该连接,然后选择 "下载"。

使用 Visual Studio 2019 远程开发 Linux 程序_第10张图片

点击 "更新" 按钮就会开始同步头文件,这些文件会被缓存在本地,因为要从远程一次性复制大量文件,所以可能会花费较长的时间。

这样远程环境就添加好了,可以开始写代码了。

参考

微软官方文档

使用 VS 2019 进行 Linux 远程开发

使用 Visual Studio 2017 开发 Linux 程序

[GDB] 使用 Visual Studio 2017 开发 Linux 程序

你可能感兴趣的:(c++,linux)