CMake+vcpkg+VS2022配置github上的cmake开源项目外部库

news/2024/7/10 22:10:49 标签: github, 开源, cmake, 编译, 外部库, 第三方库, 静态库

我们以采用 GitHub 上的开源库 cuda-bundle-adjustment 为例,其不能直接用vcpkg进行安装,只能通过cmake编译后链接到VS2022。

将 cuda-bundle-adjustment 库通过 CMake 编译链接到 Visual Studio 2022 步骤操作:

  1. 克隆存储库:使用 git 命令克隆 cuda-bundle-adjustment

    git clone https://github.com/fixstars/cuda-bundle-adjustment.git
    
  2. 创建构建目录:在克隆的 cuda-bundle-adjustment 目录内创建一个名为“build”的文件夹,这将用作构建目录,以保持源代码目录的干净和分离

  3. 配置CMake:使用CMake GUI 进行操作

    注意:我们的 Eigen3、 OpenCV 和 cuda 的一些前置条件库都是使用的 vcpkg 安装的,所以我们需要将 vcpkg 链接到这里:

    在 cuda-bundle-adjustment 目录下的 CMakeLists.txt 中的第一行添加:

    set(CMAKE_TOOLCHAIN_FILE "[你的vcpkg路径]/vcpkg/scripts/buildsystems/vcpkg.cmake"
      CACHE STRING "Vcpkg toolchain file")
    
    • 选好源码地址和 build 地址
    • 再配置好红色部分的属性(一些设置,具体可见项目的README)
    • 点击下方 Configure 编译
    • 再点击 Generate 生成 build
    image-20240315174348844

    这会生成一个 Visual Studio 2022 项目,并将其输出到 build 目录中

  4. 构建项目:在 Visual Studio 中,选择要构建的项目配置(例如Debug或Release),然后右击 ALL_BUILD,选择“生成”,即可在对应 Release 文件夹中得到 cuda_bundle_adjustment.lib

  5. 加入VS项目:前面得到的是静态库 .lib 文件,接下来将 .lib 文件放入VS项目文件夹的lib文件夹(自己建一个)中,并且将 cuda-bundle-adjustment 目录下中的 include 文件夹复制到VS项目文件夹中

  6. 配置VS项目:在项目的属性进行如下设置,添加 .\include.\lib 到下面的三个地方

    特别提醒:注意属性上方的“配置”和“平台”要和运行项目时的一致

    image-20240315213847838

    image-20240315213911989

完成!运行!


http://www.niftyadmin.cn/n/5430852.html

相关文章

CXL-Enabled Enhanced Memory Functions——论文阅读

IEEE Micro 2023 Paper CXL论文阅读笔记整理 问题 计算快速链路(CXL)协议是系统社区的一个重要里程碑。CXL提供了标准化的缓存一致性内存协议,可用于将设备和内存连接到系统,同时保持与主机处理器的内存一致性。CXL使加速器&…

Ubuntu 安装 KVM 虚拟化

1. Ubuntu 安装 KVM 虚拟化 KVM 是 Linux 内核中一个基于 hypervisor 的虚拟化模块,它允许用户在 Linux 操作系统上创建和管理虚拟机。 如果机器的CPU不支持硬件虚拟化扩展,是无法使用KVM(基于内核的虚拟机)直接创建和运行虚拟机的。此时最多只能使用…

【大数据面试题】014 Flink CDC 用过吗,请简要描述

一步一个脚印,一天一道面试题。 完成比完美更重要,明天更新完! Flink CDC 的诞生背景 Flink CDC 的全称是 Change Data Capture(变更数据捕获) 每一项技术的诞生都是为了解决某个问题,某个痛点。而 Flink…

Windows蓝牙驱动开发之模拟HID设备(一)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)

by fanxiushu 2024-03-14 转载或引用请注明原作者 把Windows电脑模拟成蓝牙鼠标和蓝牙键盘,简单的说,就是把笨重的PC电脑当成鼠标键盘来使用。 这应该是一个挺小众的应用,但有时感觉也应该算比较好玩吧, 毕竟实现一种一般人都感觉…

uniapp html变量 直接输出html

在uniapp中&#xff0c;如果你想要直接输出HTML变量的内容&#xff0c;你可以使用v-html指令来实现。这个指令会将绑定的变量中的HTML代码渲染成真实的HTML元素。 以下是一个简单的例子&#xff1a; <template> <view> <view v-html"rawHtml"&…

ES解析word内容为空的问题和直接使用Tika解析文档的方案

导言 在上一篇文章最后&#xff0c;我们虽然跑通了ES文件搜索的全部流程&#xff0c;但是仍然出现了1个大的问题&#xff1a;ES7.3实测无法索引docx和doc文档&#xff0c;content有值但是无法解析到附件成为可读的可搜索的内容&#xff0c;附件内容为空&#xff08;附件中根本…

NodeJs利用腾讯云实现手机发送验证码

本文介绍如何在nodejs实现短信发送&#xff0c;以腾讯云的短信验证为例。 腾讯云中准备工作 首先需要腾讯云的个人或者企业认证的账号&#xff0c;个人会赠送一百条&#xff0c;企业赠送一千条&#xff0c;可以用于测试&#xff0c;地址&#xff1a;腾讯云短信服务。然后需要…

springcloud五大组件:Eureka:注册中心、Zuul:服务网关、Ribbon:负载均衡、Feign:服务调用、Hystix:熔断器

1.Eureka&#xff1a;注册中心 Eureka是Netflix开发的服务发现框架&#xff0c;本身是一个基于REST的服务&#xff0c;主要用于定位运行在AWS域中的中间层服务&#xff0c;以达到负载均衡和中间层服务故障转移的目的。 SpringCloud将它集成在其子项目spring-cloud-netflix中&a…