Ubuntu中使用vscode+cmake引用第三方库进行编译调试

这篇具有很好参考价值的文章主要介绍了Ubuntu中使用vscode+cmake引用第三方库进行编译调试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在自己的项目中引用openCV和Eigen库。

opencv和Eigen库的编译安装参见上一篇文章https://blog.csdn.net/qq_41816368/article/details/130090823?spm=1001.2014.3001.5502#t4

其他的第三方库放在工作空间的thirdparty文件夹,项目编译时一起编译,不提前安装。

首先新建一个文件夹作为工作空间

mkdir test

在创建Thirdparty文件夹,把第三方库放进来。

进入工作空间文件夹,在vscode中打开

cd test
code .

创建一个c++文件

#include <opencv2/opencv.hpp>
#include "Thirdparty/Sophus/sophus/geometry.hpp"

int main()
{
    // image.pngをimgに代入
    cv::Mat img = cv::imread("./street.jpeg");

    // imgの表示
    cv::imshow("img", img);

    // キーが押されるまで待機
    cv::waitKey(0);

    return 0;
}

因为要使用cmake编译,所以要创建CMakeLists.txt,加入如下代码

cmake_minimum_required(VERSION 2.6)
 
project(vscode_cmake)

find_package(OpenCV REQUIRED)
find_package(Eigen3 3.1.0 REQUIRED)

include_directories(
    ${PROJECT_SOURCE_DIR}
    ${PROJECT_SOURCE_DIR}/ThirdParty/Sophus
    ${EIGEN3_INCLUDE_DIR}
)

add_executable (vscode_cmake ./main.cc)

target_link_libraries(${PROJECT_NAME} 
${OpenCV_LIBS}
${EIGEN3_LIBS}
)

这里需要把opencv和eigen库放入find_package  target_link_libraries,把要用到的未提前安装的第三方库加入include_directories。

再创建build.sh文件

vim build.sh

写入以下内容

cd Thirdparty/DBoW2
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

cd ../../g2o

echo "Configuring and building Thirdparty/g2o ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

cd ../../Sophus

echo "Configuring and building Thirdparty/Sophus ..."

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j

cd ../../../

mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make

注意给build.sh文件赋予权限,否则可能无法运行

chmod +x build.sh && ./build.sh

此时,工作空间文件夹下包含三个文件,main.cc  CMakeLists.txt  build.sh

在vscode中按ctrl+shift+p,选择Configure Tasks回车,再选择Create tasks,json file from template回车,再选择others,写入如下内容

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "vscode_cmake",
            "type": "shell",
            "command": "./build.sh",
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

再添加c_cpp_properties.json在.vscode文件夹中。写入如下内容

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/opencv4",
                "/usr/include/eigen3"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c17",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

includePath中要写入openCV和Eigen的路径。

ctrl+shift+p,Run Build Tasks,即完成了编译,tasks.json文件就是运行了command里写的build.sh。而build.sh文件就是使用cmake进行了编译,这里注意编译的type要写debug,不要写release,否则后面打不了断点。

ctrl+shift+d, create a launch.json file,debugger选择GDB,删除默认生成的"configurations",点击右下角Add Configuration,修改“program”为cmake编译生成的executable文件的路径,注意要写绝对路径

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/username/test/build/vscode_cmake",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

在main.cc文件夹中打上断点,就可以调试了。文章来源地址https://www.toymoban.com/news/detail-424357.html

到了这里,关于Ubuntu中使用vscode+cmake引用第三方库进行编译调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序--引用第三方组件

    引用方式分为两种 1、使用npm安装 【方便更新 推荐】 2、直接引用dist文件 按需加载组件库中的组件可以使用 3、lin-ui 组件库中的配置 1、安装nodejs环境 2、使用命令行初始化package json文件 打开小程序根目录 使用npm init初始化 3、安装第三方组件 init之后打开小程序会发现多了

    2024年02月08日
    浏览(48)
  • 【cmake学习】cmake 引入第三方库(头文件目录、库目录、库文件)

    程序的编写需要用到头文件,程序的编译需要lib文件,程序的运行需要dll文件,因此cmake引入第三方库其实就是将include目录、lib目录、bin目录引入工程。         目录 1、find_package(批量引入库文件和头文件) 2、include_directories(引入头文件目录) 3、link_directories(引入库

    2024年02月09日
    浏览(36)
  • 现代CMake高级教程 - 第 5 章:链接第三方库

    双笙子佯谬老师的【公开课】现代CMake高级教程课程笔记 案例 使用 tbb 库 main.cpp 直接链接 tbb CMakeLists.txt 直接链接 tbb 的缺点: 如果这样直接指定 tbb,CMake 会让链接器在系统的库目录里查找 tbb,他会找到 /usr/lib/libtbb.so 这个系统自带的,但这对于没有一个固定库安装位置的

    2024年02月02日
    浏览(31)
  • 使用python第三方库Parameterized进行接口参数化测试

    说明:使用python自带的unittest单元测试框架进行接口参数化测试时,因unittest不具备参数化测试,所以需要借助Parameterized第三库进行测试。 pip install parameterized 或使用国内豆瓣镜像源安装:pip install parameterized -i https://pypi.douban.com/simple 可以进行大量数据的测试,分离测试数据

    2023年04月08日
    浏览(42)
  • Android Studio引用第三方库的方式

    title: 大小端详解 date: 2023-06-06 21:01:24 comments: true #是否可评论 toc: true #是否显示文章目录 categories: #分类 - gradle - android studio tags: #标签 - gradle - android studio summary: android stduio 导入第三方库方式 这里描述的第三方库文件格式指的是 so aar so库介绍一种方法 Aar介绍两种方法 libs目录

    2024年02月08日
    浏览(40)
  • 小程序引用第三方字体(阿里巴巴普惠体)

    先直接上代码,后部分有解析 wxml app.js wxss 效果图 这里简单的说一下 wx.loadFontFace 有两个必填的参数,见上图,其中第一个必填参数用于给字体起名字,第二个必填参数为字体的url地址,这里建议使用 ttf 阿里巴巴普惠体 官网网址https://www.alibabafonts.com/ 上面我使用的是 阿里巴

    2024年02月13日
    浏览(28)
  • python-切换镜像源和使用PyCharm进行第三方开源包安装

      如果您觉得有用的话,记得给 博主点个赞,评论,收藏一键三连啊 ,写作不易啊^ _ ^。   而且听说 点赞的人每天的运气都不会太差 ,实在白嫖的话,那欢迎常来啊!!! 1. 切换镜像源 切换镜像源,多的不说,敏感字就不写了,会被拦截 点击下面红框处: 把里面的内容替

    2024年02月07日
    浏览(37)
  • unity 要怎么引用第三方库,直接用useing不?

    在Unity中引用第三方库的常见方法是使用 Assembly Definition Files(程序集定义文件) 。 这是一种Unity提供的机制,允许您创建自己的程序集,以便在Unity项目中引用和使用第三方库。以下是一些简单的步骤: 在Unity编辑器中,右键点击您的Assets文件夹,选择 Create    Assembly Defi

    2024年02月07日
    浏览(38)
  • CMake学习笔记:搜索第三方库及头文件路径 find_package()命令

    在实际开发过程中,经常不可避免的会使用到第三方开源库,这些开源库可能是通过apt-get install 命令自动安装到系统目录,也可能是由我们自己下载库的源码然后通过编译安装到指定目录的。 不管哪种方式安装的库文件,如果我们需要在自己的项目中使用这些库,首先面临

    2024年02月06日
    浏览(34)
  • Go:如何在GoLand中引用github.com中的第三方包

      本篇博客主要介绍如何在GoLand中引入github.com中的第三方包。具体步骤如下: 正文 (1) 先在GoLand中打开go的工作区目录(即环境变量$GOPATH设置的变量)。如图: 关于工作区目录中的三个子目录: bin: 保存已编译的二进制可执行程序; pkg: 保存已编译的二进制包文件; src: 保存

    2024年01月17日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包