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