在conda虚拟环境下编译colmap

本文介绍了如何在conda虚拟环境中编译colmap,涉及Eigen、Ceres、OpenGL、GLEW等库的配置,以及CMakeLists.txt的设置。详细讲述了各个库的功能和链接步骤,特别提到了解决GLEW编译问题的方法。
摘要由CSDN通过智能技术生成

各种库功能

  • 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"
)

  1. CGAL:
# note 修改
# find_package(CGAL QUIET)
set(CGAL_INCLUDE_DIR "/home/wcm/miniconda3/envs/venv/include/CGAL")
include_directories("CGAL_INCLUDE_DIR")
  1. 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值