失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS

VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS

时间:2023-09-04 13:33:50

相关推荐

VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS

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

vs进行远程开发分为三步:

1、创建远程环境的连接,随后让vs将远程环境中的系统头文件同步到本地(也可以指定其他地方的头文件,后面会讲解),c++的代码补全只需要头文件即可。

2、当代码写好后,选择合适的远程环境,vs将目标文件和代码复制到远程环境的指定位置,接着根据你的配置进行编译。

3、随后vs将会在console的gdb或gdbserver中运行你的程序,在此期间你可以充分享受vs debugger带来的高效和便利。

经过上述步骤之后你就可以在vs里调试自己编写的跨平台程序了。

文章目录

1、在VS安装 c++ for Linux2、准备一个可用的Linux远程环境3、配置远程普通项目4、配置远程cmake项目一般步骤VS Cmake远程开发opencv项目示例vs_opencv_cmake_remote_test.cppCMakeLists.txtCMakeSettings.jsonvs_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项目

注意:适用于VS,且远程目标平台的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/0222_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/0222_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/0222_Arnold_Opencv_Linux-GCC-Debug;/usr/bin/cmake --build /home/arnold/Arnold_test/0222_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:vs+cmake实现Linux远程开发 ★★★★★

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

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

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

如果觉得《VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS 》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。