当前位置: 首页 > news >正文

CMake构建学习笔记30-Ceres Solver库的构建

1 引言

Ceres Solver 是一个由 Google 开发的开源 C++ 库,用于求解大规模非线性最小二乘问题,广泛应用于计算机视觉、机器人和三维重建等领域。

2 构建

记得以前构建Ceres Solver经常失败,其中一个原因是因为 Google 系的 C/C++ 程序库很喜欢使用静态库,Google 的程序员认为静态库可以避免二进制兼容的问题。至于构建的性能问题,他们通过在专门的高性能机器上构建来解决。不过,像 Ceres Solver 这样的大型库需要的依赖库太多,它们不一定是静态库,动态库和静态库混合使用,构建时很容易出现找不到符号的问题。

笔者这里构建 Ceres Solver 使用的有依赖库有 eigen、gflags、glog、OpenBLAS 和 SuiteSparse。这里面大部分库的构建前面的文章《CMake构建学习笔记-目录》都介绍过,gflags、glog 构建也比较简单,使用本系列文章实现的自动化工具 BuildCppDependency 安装 Ceres Solver 的时候会自动进行安装。

在 Windows 平台下输入指令:

./BuildCppDependency.ps1 `-Generator "Visual Studio 16 2019" `-InstallDir "$env:GISBasic" `-SymbolDir "$env:GISBasic/symbols" `-Install ceres-solver

在 Linux (Ubuntu) 平台下输入指令:

./build.sh -install ceres-solver -installdir "$GISBasic"

还是展开看一下 Windows 下的构建脚本中的 CMake 构建参数:

# ceres-solver.ps1
param(    [string]$Name = "ceres-solver-2.2.0",[string]$SourceDir = "../Source",[string]$Generator,[string]$InstallDir,  [string]$SymbolDir,  [bool]$Force = $false,        # 是否强制重新构建[bool]$Cleanup = $true        # 是否在构建完成后删除源码和构建目录
)# 目标文件
$DllPath = "$InstallDir/lib/ceres.lib"# 依赖库数组
$Librarys = @("eigen", "gflags", "glog", "OpenBLAS", "SuiteSparse")  # 符号库文件
$PdbFiles = @("lib/RelWithDebInfo/ceres.pdb""lib/RelWithDebInfo/ceres_cuda_kernels.pdb"
) # 额外构建参数
$CMakeCacheVariables = @{BUILD_TESTING = "OFF"BUILD_EXAMPLES = "OFF"BUILD_SHARED_LIBS = "OFF"    USE_CUDA = "ON"
}. ./build-common.ps1 -Name $Name `-SourceDir $SourceDir `-InstallDir $InstallDir `-SymbolDir $SymbolDir `-Generator $Generator `-TargetDll $DllPath `-PdbFiles $PdbFiles `-CMakeCacheVariables $CMakeCacheVariables `-MultiConfig $false `-Force $Force `-Cleanup $Cleanup `-Librarys $Librarys

解释一下这几个 CMake 构建参数:

  1. BUILD_TESTING = "OFF"&&BUILD_EXAMPLES = "OFF":一般含有TEST或者EXAMPLE的构建项都不是必须的,一般都可以去掉,减少构建时间和构建体积。
  2. BUILD_SHARED_LIBS = "OFF":尝试过构建动态库,但是失败了,原因待查。这里关掉表示构建静态库。
  3. USE_CUDA = "ON":如果没有安装 CUDA SDK 就可以关掉。

3 其他

系列文章:《CMake构建学习笔记-目录》
构建工具: Github地址,GitCode地址
二进制构建结果:Github地址,GitCode地址

http://www.jsqmd.com/news/47529/

相关文章:

  • 计算机操作系统 - 设备管理 - 指南
  • 2025年11月超高速称重机,动静态称重机,瓶装线专用称重机厂家解析:定制化能力与案例参考
  • curl 命令使用笔记
  • 2025年11月高精度称重机,动静态称重机,软管称重机厂家精选:合规认证与产能数据透视
  • 2025年口碑好的电厂清淤机器人厂家最新用户好评榜
  • 2025年靠谱的极低压抗污染反渗透膜厂家最新TOP排行榜
  • 2025年比较好的无菌室净化门行业内知名厂家排行榜
  • 2025年11月留学生回国求职机构推荐榜单:权威机构列表与选择指南
  • 2025年热门的四川岩棉板厂家最新权威推荐排行榜
  • 2025年11月留学生回国求职机构推荐:五大权威机构榜单与选择指南
  • 2025年评价高的快速离心浓缩干燥器TOP品牌厂家排行榜
  • 2025年质量好的提花纸布用户好评厂家排行
  • 2025年比较好的载带成型机用户好评厂家排行
  • 2025年比较好的组合式恒温 振荡培养箱最新TOP品牌厂家排行
  • 2025年靠谱的马口铁罐厂家实力及用户口碑排行榜
  • 2025年热门的清淤机器人厂家最新权威推荐排行榜
  • 2025年靠谱的自动巡检机器人厂家最新权威实力榜
  • 2025年11月留学生求职机构市场报告:从资源覆盖到成果交付的全面解析
  • AS32S601ZIT2型MCU在人防工程报警及控制设备中的应用与国产化优势 - 指南
  • 2025年可靠的小流量齿轮泵TOP品牌厂家排行榜
  • 2025年有实力催化剂拟薄水铝石行业内知名厂家排行榜
  • 2025年专业的输送机高评价厂家推荐榜
  • 2025年诚信的镁制硅晶防火风管厂家推荐及选购指南
  • 2025年靠谱的试验机行业内知名厂家排行榜
  • 2025年评价高的浙江农机链条厂家最新TOP排行榜
  • 2025年11月留学生找实习机构推荐:权威市场报告解读与口碑机构列表
  • uvx命令介绍(uv命令核心命令之一,用于隔离环境敏捷运行Python命令行设备或脚本,无需永久安装依赖)结合了pipx和npx功能,更快、隔离更强,适合临时任务或需要严格环境隔离的场景;uv安装uv
  • 2025年优质的广州食堂洗碗机高评价厂家推荐榜
  • 2025年质量好的重型卡车天窗优质厂家推荐榜单
  • 2025年有实力中央空调风机盘管厂家最新TOP排行榜