各种库功能
- Eign:Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.Eigen官网
- Ceres:Ceres Solver 1 is an open source C++ library for modeling and solving large, complicated optimization problems. It can be used to solve Non-linear Least Squares problems with bounds constraints and general unconstrained optimization problems. It is a mature, feature rich, and performant library that has been used in production at Google since 2010.
Ceres官网 - OpenGL:什么是OpenGl
- GLEW:The OpenGL Extension Wrangler Library (GLEW) is a cross-platform open-source C/C++ extension loading library. GLEW provides efficient run-time mechanisms for determining which OpenGL extensions are supported on the target platform. OpenGL core and extension functionality is exposed in a single header file. GLEW has been tested on a variety of operating systems, including Windows, Linux, Mac OS X, FreeBSD, Irix, and Solaris.GLEW官网
- Qt OpenGL:官网
- Qt Core:Qt Core官网
- Qt Widgets:The Qt Widgets Module provides a set of UI elements to create classic desktop-style user interfaces. See the User Interfaces overview for more information on using widgets.Qt Widgets官网
- CGAL:CGAL is a software project that provides easy access to efficient and reliable geometric algorithms in the form of a C++ library.CGAL官网
- FreeImage:图像处理库FreeImage官网,FreeImage功能
将各种库链接到虚拟环境的路径下
- 设置cmake库文件搜索路径:
set(CMAKE_LIBRARY_PATH " /home/wcm/miniconda3/envs/venv/lib")
2.Eigen:修改头文件目录
-前: find_package(Eigen3 REQUIRED)
-后: set(EIGEN3_INCLUDE_DIR "/home/wcm/miniconda3/envs/venv/include/eigen3") include_directories("${EIGEN3_INCLUDE_DIR}")
3. ceres:ceres依赖与各种库
- 前:
find_package(Ceres REQUIRED)
- 后:
set(Ceres_DIR "/home/wcm/miniconda3/envs/venv/lib/cmake/Ceres")
# 指定ceres库搜索路径
set(Ceres_DIR "/home/wcm/miniconda3/envs/venv/lib/cmake/Ceres")
find_package(Ceres REQUIRED)
include_directories("${CERES_INCLUDE_DIR}")
link_directories(${CERES_LIBRARY_DIRS})
4.OpenGL:没动
5. GLEW:编译报错找到两个glew库,可将conda虚拟环境下的库删除,做好备份即可。
6. Qt:
find_package(Qt5 5.4 REQUIRED COMPONENTS Core OpenGL Widgets)
if(Qt5_FOUND)
message(STATUS "Found Qt")
message(STATUS " Module : ${Qt5Core_DIR}")
message(STATUS " Module : ${Qt5OpenGL_DIR}")
message(STATUS " Module : ${Qt5Widgets_DIR}")
endif()
# Qt头文件目录不变
set(COLMAP_INCLUDE_DIRS
${Boost_INCLUDE_DIRS}
${EIGEN3_INCLUDE_DIRS}
# ${GLOG_INCLUDE_DIRS}
"/usr/include/glog"
${FREEIMAGE_INCLUDE_DIRS}
${CERES_INCLUDE_DIRS}
${GLEW_INCLUDE_DIRS}
${Qt5Core_INCLUDE_DIRS}
${Qt5OpenGL_INCLUDE_DIRS}
${Qt5Widgets_INCLUDE_DIRS}
# "/home/wcm/miniconda3/envs/venv/include"
# "/home/wcm/miniconda3/envs/venv/include"
# "/home/wcm/miniconda3/envs/venv/include"
# "/home/wcm/miniconda3/envs/venv/lib/cmake/Qt5Core"
# "/home/wcm/miniconda3/envs/venv/lib/cmake/Qt5OpenGL"
# "/home/wcm/miniconda3/envs/venv/lib/cmake/Qt5Widgets"
)
# 指定到libboost_filesystem.so.1.72、libboost_program_options.so.1.72等具体库路径
set(COLMAP_EXTERNAL_LIBRARIES
${CMAKE_DL_LIBS}
# ${Boost_FILESYSTEM_LIBRARY}
# ${Boost_PROGRAM_OPTIONS_LIBRARY}
# ${Boost_REGEX_LIBRARY}
# ${Boost_SYSTEM_LIBRARY}
# ${GLOG_LIBRARIES}
# ${FREEIMAGE_LIBRARIES}
${CERES_LIBRARIES}
${OpenGL_gl_LIBRARY}
${OpenGL_glu_LIBRARY}
${Qt5Core_LIBRARIES}
${Qt5OpenGL_LIBRARIES}
${Qt5Widgets_LIBRARIES}
# note 添加库
# ${LIB_GL_DIR}
# note 添加boost库路径
"/home/wcm/miniconda3/envs/venv/lib/libboost_filesystem.so.1.72"
"/home/wcm/miniconda3/envs/venv/lib/libboost_program_options.so.1.72"
"/home/wcm/miniconda3/envs/venv/lib/libboost_regex.so.1"
"/home/wcm/miniconda3/envs/venv/lib/libboost_system.so.1"
"/home/wcm/miniconda3/envs/venv/lib/libglog.so.0"
"/home/wcm/miniconda3/envs/venv/lib/libfreeimage.so.3"
# "/home/wcm/miniconda3/envs/venv/lib/libGLU.so.1"
# "/home/wcm/miniconda3/envs/venv/lib/libGLEW.so.2.1"
)
- CGAL:
# note 修改
# find_package(CGAL QUIET)
set(CGAL_INCLUDE_DIR "/home/wcm/miniconda3/envs/venv/include/CGAL")
include_directories("CGAL_INCLUDE_DIR")
- FreeImage
# note find_package(FreeImage REQUIRED)
set(FREEIMAGE_INCLUDE_DIRS "/home/wcm/miniconda3/envs/venv/include")
include_directories("${FREEIMAGE_INCLUDE_DIRS}")
# 指定freeimage库路径
set(COLMAP_EXTERNAL_LIBRARIES "/home/wcm/miniconda3/envs/venv/lib/libfreeimage.so.3")
CMakeLists.txt的完整部分
cmake_minimum_required(VERSION 3.16.3)
project(COLMAP)
set(COLMAP_VERSION "3.6")
set(COLMAP_VERSION_NUMBER "3600")
# note 添加cmake搜索路径
set(CMAKE_LIBRARY_PATH " /home/wcm/miniconda3/envs