VS远程调试(Visual Studio)远程连接到linux cmake(跨平台开发)(适用于VS2019,且远程目标平台cmake版本大于等于3.8)
參考文章:使用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 gdbserver3、配置遠程普通項目
創建項目選這個:
詳細步驟:
見此: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:
取個別名:
選擇要遠程的計算機:
修改遠程生成根目錄:
點擊最下面高級選項,這倆不知道改不改(貌似不用改,我看了一下,里面只有這些文件而已):
然后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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VS cmake远程调试ubuntu项目
- 下一篇: linux ubuntu如何解压rar文