笔者在编译OpenMVS的过程十分曲折。刚开始借助CMake编译,能够把与库生成相关的工程编译出来,但是与可执行文件相关的工程会报错;后来参考官方教程借助VCPKG编译,发现VCPKG并没有想中强大、好用,最终也是遇到了各种问题没有编译成功。但是,笔者在解决问题的过程发现了问题的根源:boost。此外,网上的编译教程也可能存在问题,下面直接给出在笔者电脑能够编译成功的过程。
首先,编译CGAL。在编译OpenMVS时,对boost库的依赖主要在两个地方:1、OpenMVS本身依赖boost库,2、OpenMVS所依赖的库CGAL也依赖boost。首先对CGAL进行编译有助于统一boost的版本及设置。笔者这里在编译CGAL时,勾选了CGAL_Boost_USE_STATIC_LIBS以及不勾选CGAL_HEADER_BNLY。在后续编译OpenMVS时,添加CGALConfig.cmake所在的路径即可。
然后,编译OpenMVS。笔者对其CMakeLists.txt进行了修改(当然不修改应该也没什么问题),将原来的片段
FIND_PACKAGE(Boost COMPONENTS iostreams program_options system serialization REQUIRED)
if(Boost_FOUND)
LIST(APPEND OpenMVS_EXTRA_INCLUDES ${Boost_INCLUDE_DIRS})
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
LIST(APPEND OpenMVS_DEFINITIONS -D_USE_BOOST)
ADD_DEFINITIONS(${Boost_DEFINITIONS})