安装 VS 2019 时,必须要勾选 "使用 C++ 的 Linux 开发" 工具集
创建一个类型为 Linux 的 控制台应用程序 的解决方案。
若要查看配置选项,请选择 "项目" > "属性" 菜单,或在 "解决方案资源管理器" 中右键单击相应项目,然后从上下文菜单中选择 "属性" 。
转到 "配置属性" > "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;
转到 "配置属性" > "C/C++" > "常规" 然后设置 "附加包含目录"。
附加包含目录: 指定要添加到包含路径的一个或多个目录。使用分号来分隔多个目录。 (-I[path])。
这个是远程主机上的路径,相当于 gcc 编译时指定 "-I[路径]" 选项。
如果项目依赖第三方库,则需要将第三方库的头文件目录加入其中。
另外,若需要 VS 对这些目录中的头文件进行代码提示,则需要同时把这些目录添加到之前所述的 "VC++ 目录" 属性中的包含目录中。
转到 "配置属性" > "连接器" > "常规" 然后设置 "附加库目录"。
附加库目录: 允许用户重写环境库路径。(-L [文件夹])。
这个是远程主机上的路径,相当于 gcc 编译时指定 "-L[路径]" 选项,用于指定引用动态库和静态库的目录。
如果项目依赖第三方库,则需要将第三方库的库目录加入其中。
转到 "配置属性" > "连接器" > "输入" 然后设置 "库依赖项" 和 "附加依赖项"。
库依赖项: 此选项可指定要添加到链接器命令行的附加库。 会将其他库添加到前缀为 "lib" 和结尾扩展名为 ".a" 的链接器命令行的末尾。 (-l[FILE])
相当于 gcc 设置 "-l[库名称]" 选项,用于指定链接时所需要的动态库和静态库名称。如果找不到依赖的库文件,链接时会错误,显示 "无法解析的符号"。
添加依赖库项时,只需要将库文件名的前缀 lib 和后缀 .a / .so 去掉。如 libtcmalloc.so, 去掉lib, .so, 填写 tcmalloc 即可。
附加依赖项: 指定要添加到链接命令行的附加项。
填写附加依赖项的路径和库文件全名。
转到 "配置属性" > "C/C++" > "语言" 然后设置 "C++ 语言标准"。
选择合适的 C++ 标准:C++17。
有关更多项目配置属性的信息,请参阅微软官方文档:
Linux 项目属性页参考
有了远程环境我们才能同步头文件或者进行调试运行。
在第一次编译或调试你的项目时 VS 会自动让你连接远程环境,当然,我们推荐在 "调试" > "选项" > "跨平台" > "连接管理器" 中进行设置:
在 Visual Studio 中,依次选择菜单栏上的 "工具" > "选项" ,以打开 "选项" 对话框。 然后,依次选择 "跨平台" > "连接管理器" ,以打开 "连接管理器" 对话框。
如果你以前没有在 Visual Studio 中设置过连接,Visual Studio 会在你首次生成项目时,为你打开 "连接管理器" 对话框。
在 "连接管理器" 对话框中,选择 "添加" 按钮,以添加新连接。
输入以下信息:
条目 | 描述 |
---|---|
主机名 | 目标设备的名称或 IP 地址 |
端口 | 运行 SSH 服务的端口,通常为 22 |
用户名 | 要进行身份验证的用户 |
身份验证类型 | 同时支持密码和私钥 |
密码 | 输入的用户名的密码 |
私钥文件 | 为 ssh 连接创建的私钥文件 |
密码 | 与上面选择的私钥一起使用的密码 |
登录成功后这个连接就添加完成了。
管理器下面还有一个远程标头管理器的设置项,用来同步头文件。
在连接管理器中添加新连接时,Visual Studio 会自动为远程系统上的编译器检测包含目录。 随后 Visual Studio 压缩这些文件,并将其复制到本地 Windows 计算机上的目录中。 此后,每当在 Visual Studio 或 CMake 项目中使用该连接时,都会使用这些目录中的标头来提供 IntelliSense。
若要管理标头缓存,导航到 "工具" > "选项",依次选择 "跨平台" > "连接管理器" > "远程标头 IntelliSense 管理器" 。 若要在更改 Linux 计算机后更新标头缓存,请选择远程连接,然后选择 "更新"。 选择 "删除",来删除标头但不删除连接本身。 选择 "浏览",打开 "文件资源管理器" 中的本地目录 。 将此文件夹视为只读文件夹。 要下载在 Visual Studio 2017 版本 15.3 之前创建的现有连接的标头,请选择该连接,然后选择 "下载"。
点击 "更新" 按钮就会开始同步头文件,这些文件会被缓存在本地,因为要从远程一次性复制大量文件,所以可能会花费较长的时间。
这样远程环境就添加好了,可以开始写代码了。
微软官方文档
使用 VS 2019 进行 Linux 远程开发
使用 Visual Studio 2017 开发 Linux 程序
[GDB] 使用 Visual Studio 2017 开发 Linux 程序