树莓派(5)之linux远程VS2019高级开发联调(二)cmake

发布于:2022-07-26 ⋅ 阅读:(628) ⋅ 点赞:(0)

前言

补充上篇        有了cmake的支持 linux的开发也就更顺手了。

本来用Solution联调linux已经很爽了。最近项目在搞华为昇腾AI平台项目,因工程是cmake的  大家在vs2019下不知咋配居然就用上clion的开发。不能说不好,试用了3天确实受不了。怪我太小白 还是Visual Studio搞起。

步骤如下:

1.远程linux端配置

确保安装了下面的包(有的话 不需要装 我只是把用到的都列出来了)

sudo apt install  gcc gdb rsync zip ninja-build cmake openssh-server  

2.安装vs2019 勾选Linux开发选项

(不勾win下的开发 只安装linux的开发环境大概耗300多M磁盘 所以不必惊慌) .

过程略.

3.vs2019中关于Linux相关的设置介绍.

创建cmake linux工程  我这里还是用树莓派做例子

也可以打开导入已有的cmake工程 找到cmakelist.txt位置如下图:

在工程树中找到cmakelist.txt右键点 xxx 的 cmake 设置 就会自动创建CMakeSettings.json文件

点cmake设置的加号添加linux配置项 如下:

绿色框选菜单就是cmake一些设置 其实就是CMakeSettings.json这玩意 可以记事本打开看。

红色框选菜单就是cmake生成项目

灰色框选菜单是cmake清理

配置如果没有问题 cmake生成项目后 就可以点绿色的按钮下拉找到工程名编译调试了

看到下面调用堆栈 线程 ... vs的千年不变的环境又回来了。

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": "",
            "variables": []
        },
        {
            "name": "Linux-GCC-Debug",
            "generator": "Ninja",
            "configurationType": "Debug",
            "cmakeExecutable": "/usr/bin/cmake",            //很重要的cmake位置 确保能用
            "remoteCopySourcesExclusionList": [ ".vs", ".git", "out" ],
            "cmakeCommandArgs": "",
            "buildCommandArgs": "",
            "ctestCommandArgs": "",
            "inheritEnvironments": [ "linux_x64" ],
            "remoteMachineName": "${defaultRemoteMachineName}",
            "remoteCMakeListsRoot": "$HOME/PI3Work/src",    //源码同步到设备的路径
            "remoteBuildRoot": "$HOME/PI3Work/out/build/${name}",       //编译中间的路径
            "remoteInstallRoot": "$HOME/PI3Work/out/install/${name}",   //生成安装的路径
            "remoteCopySources": true,
            "rsyncCommandArgs": "-t --delete --delete-excluded",
            "remoteCopyBuildOutput": false,
            "remoteCopySourcesMethod": "rsync",
            "addressSanitizerRuntimeFlags": "detect_leaks=0",
            "variables": []
            "remoteCopyAdditionalIncludeDirectories": [ "/home/wtoe/opencv-4.2.0-build", "/home/HwHiAiUser/mxVision", "" ]
        }
    ]
}

"remoteCopyAdditionalIncludeDirectories": [ "/home/wtoe/opencv-4.2.0-build", "/home/HwHiAiUser/mxVision", "" ]

最后一句这个参数看到没  vs同步头文件时除/usr/include /usr/local/ 外添加这个参数就可以同步其他位置的第三方库头文件识别了,快试试 是不是可以ctrl点进去了。

到此为止其实vs就是多了一个cmakesettings.json文件和其他同事的clion也不冲突这点非常好了。

最后补充一点 有发现有小伙伴git上传的so工程vs无法调试进不了断点,后来分析GCC参数

去修改下cmakelist.txt 已解决

target_link_libraries(${TARGET_LIBRARY} -Wl,-z,relro,-z,now,-z,noexecstack)
#target_link_libraries(${TARGET_LIBRARY} -Wl,-z,relro,-z,now,-z,noexecstack -s)

其他的编译问题应该就是CMakelist上的问题了。


网站公告

今日签到

点亮在社区的每一天
去签到