当前位置:网站首页>调用colmap作为my项目第三方库,debug进入colmap代码调试--CMakeLists配置
调用colmap作为my项目第三方库,debug进入colmap代码调试--CMakeLists配置
2022-08-05 18:06:00 【华为云】
1. 下载colmap源代码,修改 CMakeLists.txt
找到if(CMAKE_BUILD_TYPE)行,
在上一行添加:set(CMAKE_BUILD_TYPE "Debug"),以编译debug版本的lib库,
从而在debug自己的项目中,可以进入第三方库的colmap代码,进行调试。
这一步很重要,如果没有这一步,编译的是release版本的lib库,debug自己项目,无法进入第三方库的代码。
2. 在colmap根路径:
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=my_installed_colmap_path
make -j5
make install
3. 在colmap的官方文档(https://colmap.github.io/install.html#linux)中,有详细介绍怎么调用colmap作为第三方库:
如上,find_package会在服务器找到colmap的include路径(保存在变量:COLMAP_INCLUDE_DIRS)、lib路径(保存在变量:COLMAP_LIBRARIES)和从CMake 配置项到lib库的连接关系(保存在变量:COLMAP_LINK_DIRS)、还有其他的信息到相应变量。
更好的做法是指定具体搜索目录:
如上cmake只在COLMAP_DIR路径搜索colmap的配置项,并生成关于colmap的所有变量,比如COLMAP_LINK_DIRS会保存关于colmap的相关的所有相关的链接库。
这个很重要,我开始使用set的方法设置colmap的一些变量(比如头文件,依赖库,从CMake配置项到相关lib库的连接关系),总是有问题,说明我不能列清楚所有的变量、依赖库、连接关系。但是依靠cmake的命令find_package,他会自动搜索到所有相关的变量、依赖库和连接关系,保证完整和正确。
分析:
(1)COLMAP_DIR是一种规范写法,三方库名称+"_DIR",指定具体的cmake的配置项的路径,注意这个路径是make install后路径中的某个子文件,包含如下配置信息:
(2)include_directories放在add_executable(for编译执行文件)或者add_library(for编译库)前面,用于包含my项目依赖的my项目的头文件和第三方库的头文件的路径。
另一种写法是不用include_directories命令,而使用target_include_directories(${helloworld} ${COLMAP_INCLUDE_DIRS}) 命令,放在add_executable(for编译执行文件)或者add_library(for编译库)下一行,来添加头文件和依赖库(命令target_link_libraries)。
(3)link_directories很重要,(直觉)他是用于连接所有需要的lib库。
边栏推荐
- 【OAuth2】十四、OAuth2授权端点配置类OAuth2AuthorizationEndpointConfigurer和OAuth2AuthorizationEndpointFilter
- WPF 截图控件之绘制箭头(五)「仿微信」
- 第十七天笔记
- 金仓数据库KingbaseES客户端编程接口指南-DCI(2. 概述)
- 「学习笔记」矩阵乘法与矩阵快速幂
- 包载信使RNA(mRNA)的虫草多糖脂质体|冬虫夏草多糖脂质体包载小干扰RNA(siRNA)
- 营销之王完美日记卖不动了
- 【访谈】Eotalk Vol.02:从极客到 CEO,开发者应该如何提升技术领导力?
- JVM内存模型分析(通俗易懂)
- ALSA库的移植及测试命令
猜你喜欢

优化客户服务的 7 个关键步骤

包载信使RNA(mRNA)的虫草多糖脂质体|冬虫夏草多糖脂质体包载小干扰RNA(siRNA)

Watch监听器的使用

IntelliJ IDEA 2022.2最新版本如何激活

认识一下MRS里的“中间人”Alluxio

深信服上网行为管理如何配置双因素/双因子(2FA)身份认证

对话窗口、面板滚动视图、标签切换视图;QDialog、QScroollArea、

齐岳|超支化聚缩水甘油接枝磁性Fe3O4纳米粒子(HPG-grafted MNPs)

BFD实验演示(Huawei路由器设备配置)

ERMiner: Sequential Rule Mining Using Equivalence Classes
随机推荐
go基础之web应用
rk3399 如何使用dynamic debug动态打印调试
【OAuth2】十四、OAuth2授权端点配置类OAuth2AuthorizationEndpointConfigurer和OAuth2AuthorizationEndpointFilter
一套多用表单小部件代码下载
全志V853芯片 在Tina下RISC-V核E907启动方式的选择
eKuiper Newsletter 2022-07|v1.6.0:Flow 编排 + 更好用的 SQL,轻松表达业务逻辑
js文字开场百叶窗js特效
葡聚糖偶联超顺磁性纳米Fe3O4造影剂|多肽偶联偶联超顺磁性纳米Fe3O4造影剂
canvas实现多个图片合成js特效
60几行代码绘制丘比特爱情之箭!
【软考 系统架构设计师】软件架构设计⑤ 软件架构评估
与form表单相关的元素有哪些
【访谈】Eotalk Vol.02:从极客到 CEO,开发者应该如何提升技术领导力?
一个很好用的中奖概率控制器
rk3399 休眠唤醒standby调试指南
1.9 亿美元被“掏空”!黑客牵头,路人“趁火打劫”,一切仅因一个低级致命漏洞...
浓情七夕,有礼相送!
齐岳|超支化聚缩水甘油接枝磁性Fe3O4纳米粒子(HPG-grafted MNPs)
七夕限定 | 龙凤呈祥2款包袱瓶数字藏品全网独家发售
IDEA 2022最新版 基于 JVM极致优化 IDEA 启动速度