CMAKE基础指令记录

1. CMake中条件判断语句

if(<constant>)
  ...
else()
  ...
endif()

当 constant 为 1/ON/YES/TRUE/Y/Non-zero 时判别为真,

当 constant 为 0/OFF/NO/FALSE/N/IGNORE/NOTFOUND 或者为空字符串 或后缀为 -NOTFOUND 时判断为假。

大小写敏感,当不是上述列举出来的这些常量时,作为变量对待。

2. 如果想要将项目编译成动态链接库的形式,可以在命令行通过参数控制

cmake -DBUILD_SHARED_LIBS=ON ..

3.下载并安装eigen、ceres-solver等数学运算库

可以参考openMVS build wiki

4. 设置编译选项

CMake中可以通过 CMAKE_BUILD_TYPE来对编译方式进行控制,使产生 Debug 类型的可执行程序或者 Release 类型的可执行程序,方便我们进行调试或者优化。

SET(CMAKE_BUILD_TYPE "Release")

可以选择的类型有:空, Debug, Release, RelWithDebInfo, MinSizeRel。

 

TODO

  • Improve compile time using forward declaration of options
  • 借鉴并学习COLMAP 提升编译速度的技巧!

 

附:各种不同的GPU架构对应的 sm 标志


参考资料

[1] Cmake中查找并使用其他程序库 https://blog.csdn.net/laolu1573/article/details/60573511

[2] 配置eigen3和ceres为thirdparty https://blog.csdn.net/billbliss/article/details/88585171

[3] Detecting Cuda Architecture required by CMake using NVCC https://wagonhelm.github.io/articles/2018-03/detecting-cuda-capability-with-cmake

[4] Matching SM architectures (CUDA arch and CUDA gencode) for various NVIDIA cards

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章