参考文章:使用vs2019进行Linux远程开发

vs进行远程开发分为三步:
1、创建远程环境的连接,随后让vs将远程环境中的系统头文件同步到本地(也可以指定其他地方的头文件,后面会讲解),c++的代码补全只需要头文件即可。
2、当代码写好后,选择合适的远程环境,vs将目标文件和代码复制到远程环境的指定位置,接着根据你的配置进行编译。
3、随后vs将会在console的gdb或gdbserver中运行你的程序,在此期间你可以充分享受vs debugger带来的高效和便利。
经过上述步骤之后你就可以在vs里调试自己编写的跨平台程序了。

文章目录

  • 1、在VS安装 c++ for Linux
  • 2、准备一个可用的Linux远程环境
  • 3、配置远程普通项目
  • 4、配置远程cmake项目
    • 一般步骤
    • VS Cmake远程开发opencv项目
      • 示例
        • vs_opencv_cmake_remote_test.cpp
        • CMakeLists.txt
        • CMakeSettings.json
        • vs_opencv_cmake_remote_test.h
        • 在vs编译结果
        • 在ubuntu上运行结果

1、在VS安装 c++ for Linux

(我修改的时候把嵌入式lot啥的也勾上了,不知道那个干什么用的)

2、准备一个可用的Linux远程环境

例如配置了静态IP的Linux虚拟机,并且已经安装好了GCC工具链以及openssh(openssh-server、g++、gdb 和 gdbserver)。(不用多说,这个GCC[G++]工具链用apt install安装就好了,openssh也一样)

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

3、配置远程普通项目

创建项目选这个:

详细步骤:
见此:VS(官方)跨平台开发远程调试教程

4、配置远程cmake项目

注意:适用于VS2019,且远程目标平台的cmake版本大于等于3.8

安装高版本cmake见此:linux 下如何升级CMAKE?(安装指定版本cmake)(高版本cmake)(不删除之前的,可以用软连接)

远程生成遇到的问题及解决办法及成功案例见此:
VS cmake远程调试ubuntu项目生成报错:“Does not match the generator used previously: Ninja“

其他的按照下面几篇文章指导的步骤操作,基本没啥问题了

一般步骤

先新建项目,选择cmake的;

完后点击这里管理配置,点击左边新建:


选择linux-GCC-Debug:

取个别名:

选择要远程的计算机:

修改远程生成根目录:

/arnold_test/20220222_vs_remote_test/Arnold_Opencv_Linux-GCC-Debug

点击最下面高级选项,这俩不知道改不改(貌似不用改,我看了一下,里面只有这些文件而已):


然后ctrl+s保存配置文件,然后切换到.cpp文件,在上面选择运行项:

然后ctrl+f5运行(当然直接打断点调试也是可行的):

VS Cmake远程开发opencv项目

opencv项目貌似还跟上面不太一样,具体配置可参考:

  • VS cmake远程调试ubuntu项目生成报错:“Does not match the generator used previously: Ninja“(删除.vs隐藏文件夹)
  • VS cmake 远程开发 opencv报错:CMake was unable to find a build program corresponding to “Ninja“.(换个构建方式)

主要就是貌似需要把CMake生成器改成Unix Makefiles,还有IntelliSense模式改成linux-gcc-x64

然后还可能会遇到代码紫色波浪线报错,解决参考:

  • vs cmake opencv 远程 ubuntu 开发时:vs代码出现紫色波浪线且报错怎么办?

开发opencv项目,是直接在上面的基础上,修改CMakeLists.txt
不过前提是在目标机器上已经能编译运行起来opencv项目哈。。。可参考:Linux ubuntu16.04 安装opencv4教程(源码编译)

示例

vs_opencv_cmake_remote_test.cpp
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv)
{if (argc != 2){printf("usage: DisplayImage.out <Image_Path>\n");return -1;}Mat image;image = imread(argv[1], 1); //1是以rgb读取if (!image.data){printf("No image data \n");return -1;}namedWindow("Display Image", WINDOW_AUTOSIZE);imshow("Display Image", image);waitKey(0);return 0;
}
CMakeLists.txt
# CMakeList.txt: vs_opencv_cmake_remote_test 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)project ("vs_opencv_cmake_remote_test")find_package(OpenCV REQUIRED )
#find_package(OPENCV REQUIRED)# 将源代码添加到此项目的可执行文件。
add_executable (vs_opencv_cmake_remote_test "vs_opencv_cmake_remote_test.cpp" "vs_opencv_cmake_remote_test.h")# TODO: 如有需要,请添加测试并安装目标。
target_link_libraries(vs_opencv_cmake_remote_test ${OpenCV_LIBS})#cmake_minimum_required(VERSION 2.8)
#project( test )
#find_package( OpenCV REQUIRED )
#add_executable( test test.cpp )
#target_link_libraries( test ${OpenCV_LIBS} )
CMakeSettings.json
{"configurations": [{"name": "x64-Debug","generator": "Ninja","configurationType": "Debug","inheritEnvironments": [ "msvc_x64_x64" ],"buildRoot": "${projectDir}\\out\\build\\${name}","installRoot": "${projectDir}\\out\\install\\${name}","cmakeCommandArgs": "","buildCommandArgs": "","ctestCommandArgs": ""},{"name": "Arnold_Opencv_Linux-GCC-Debug","generator": "Unix Makefiles","configurationType": "Debug","cmakeExecutable": "cmake","remoteCopySourcesExclusionList": [ ".vs", ".git", "out" ],"cmakeCommandArgs": "","buildCommandArgs": "","ctestCommandArgs": "","inheritEnvironments": [ "linux_x64" ],"remoteMachineName": "-596051304;192.168.1.44 (username=arnold, port=22, authentication=Password)","remoteCMakeListsRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/src","remoteBuildRoot": "/home/arnold/Arnold_test/20220222_Arnold_Opencv_Linux-GCC-Debug","remoteInstallRoot": "$HOME/.vs/${projectDirName}/${workspaceHash}/out/install/${name}","remoteCopySources": true,"rsyncCommandArgs": "-t --delete --delete-excluded","remoteCopyBuildOutput": false,"remoteCopySourcesMethod": "rsync","addressSanitizerEnabled": false,"intelliSenseMode": "linux-gcc-x64","remoteCopyUseCompilerDefaults": true}]
}
vs_opencv_cmake_remote_test.h
// vs_opencv_cmake_remote_test.h: 标准系统包含文件的包含文件
// 或项目特定的包含文件。#pragma once#include <iostream>// TODO: 在此处引用程序需要的其他标头。
在vs编译结果
开始将文件复制到远程计算机。
已完成复制文件(运行时间 00h:00m:00s:259ms)。
cd /home/arnold/Arnold_test/20220222_Arnold_Opencv_Linux-GCC-Debug;/usr/bin/cmake --build /home/arnold/Arnold_test/20220222_Arnold_Opencv_Linux-GCC-Debug --clean-first  --config Debug;[ 50%] Building CXX object CMakeFiles/vs_opencv_cmake_remote_test.dir/vs_opencv_cmake_remote_test.cpp.o
[100%] Linking CXX executable vs_opencv_cmake_remote_test
[100%] Built target vs_opencv_cmake_remote_test全部重新生成 已成功。
在ubuntu上运行结果
./vs_opencv_cmake_remote_test test.jpg

参考文章1:vs2019+cmake实现Linux远程开发 ★★★★★

参考文章2:VS2019 C++的跨平台开发——Cmake项目(二)★★★★★

参考文章3:VS2019远程调试已有cmake项目

VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS2019,且远程目标平台cmake版本大于等于3.8)相关推荐

  1. 尝试使用Visual studio编写Android程序C++的跨平台开发Android

    说明: 作为Visual studio的老粉丝,从98版追到2013版,至今重新打开熟悉的页面,就像回到了多年前. 早就听说vs可以编写android程序,以前一直没机会,趁现在无事可做,想看看到底现 ...

  2. Visual Studio Code——SSH连接Linux

    Visual Studio Code--SSH连接Linux 记录使用连接linux服务器 一.连接远程服务器 安装插件工具 名称: Remote - SSH 二.修改扩展文件 我这里直接把扩展文件修 ...

  3. visual studio和vs code 哪个好用,适用于哪个阶段

    Visual Studio 和 Visual Studio Code 都是很不错的开发工具,但它们的适用范围不同. Visual Studio 是一个功能强大的集成开发环境 (IDE),拥有强大的代码 ...

  4. Visual Studio 2019连接自动的Sql Server开发版数据库(C#语言)

    Visual Studio 2019连接自动的Sql Server开发版数据库,C#语言 连接字符串: server=(LocalDB)\MSSQLLocalDB;database=master;in ...

  5. 鸿蒙WLAN模组联网+解决在Visual Studio Code不能更改Linux文件的问题

    这里写目录标题 WLAN模组联网 下载使用IPOP 使用IPOP进行WLAN模块联网 解决在Visual Studio Code不能更改Linux文件的问题 后续 WLAN模组联网 下载使用IPOP ...

  6. visual studio asmx 调试_通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序...

    最近两天在Linux中调试.NET Core应用程序,同时我发现在Linux中调试.NET Core应用程序并不容易.一直习惯在Visual Studio中进行编码和调试.现在我想的是可以简单快速的测 ...

  7. 通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序

    最近两天在Linux中调试.NET Core应用程序,同时我发现在Linux中调试.NET Core应用程序并不容易.一直习惯在Visual Studio中进行编码和调试.现在我想的是可以简单快速的测 ...

  8. linux java远程调试_Visual Studio 2017 Linux远程调试(gdbserver)

    在我的远程计算机(Ubuntu 16.04.4 LTS)上安装gdbserver之后,我通过在Visual Studio 2017中创建"跨平台控制台应用程序(linux)"项目来 ...

  9. C/C++程序的断点调试 - Visual Studio Code

    本文以Visual Studio Code为例,简述C/C++程序断点调试的基本方法和过程.其它的IDE环境,大同小异. 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载 ...

最新文章

  1. 喀什市2021年高考成绩查询,2021年新疆高考查分网站查分网址:http://www.xjzk.gov.cn/...
  2. React Native学习笔记-1:JSC profiler is not supported.(转载)
  3. Linux命令大全(Ubuntu18系统)
  4. js改变select下拉框默认选择的option
  5. python神经网络库 keras_在Python和R中使用Keras和Tensorflow进行深度学习
  6. SparkSQL-从0到1认识Catalyst
  7. 6. Nginx + PHP + FastGCI安装
  8. linux定时器无法重启pm2,pm2无法自动重启
  9. Linux基础学习七:mysql的安装和配置教程
  10. 做游戏美术师必须掌握哪些基本知识
  11. 用vue和node写的简易购物车
  12. 解决xx is not in the sudoers file. This incident will be reported.问题
  13. 10月5日起 部分小米红米机型将停止开发版内测公测
  14. MediaElementAudioSourceNode
  15. design expert响应面分析_第01组(17)需求分析报告 - yuqiao1120
  16. 文字与编码的奥妙(上篇)
  17. 北京已开通5G基站6324个,年内目标建设超1万个5G基站
  18. Verilog数字钟
  19. HTML引用高德英文地图
  20. 计算机最近被访问的文件夹,电脑复制文件夹提示“目标文件夹访问被拒绝”怎么办?[多图]...

热门文章

  1. 用SCCM2007 R2管理Windows更新,SCCM系列之六
  2. 你选的那些创业方向 可能正在毁掉你!
  3. 【目录】Python 入门基础篇 <(^-^)>
  4. 【转】SAP 权限设定、分配及传输
  5. Oracle连接查询
  6. 删除归档日志_ORA-00257:archiver error.Connect internal only, until freed的问题
  7. 公司间采购的后台配置备忘录
  8. OO实现ALV TABLE 八:ALV的布局功能
  9. 既有“基本盘”又有“增长盘”,宝盛集团的营销“生意经”
  10. 华为q1设置虚拟服务器,如何使用华为华为Q1 Q1互联网路由设置图文教程 | 192.168.1.1手机登陆...