天天看点

cloudcompare源码编译遇到的问题

最近在编译cloudcompare源码,编译的大体步骤就不啰嗦了,网上有类似的教程,这里讲几点我遇到的小问题:

1、CloudCompare-master文件夹下CMakeLists.txt的第70行else( APPLE )改为elseif( APPLE ),在之前用cmake3.8编译的时候没有出现这个问题。

2、如果在编译的时候选择了依赖CGAL,由于cmake认为CGAL版本4.10比4.3小,但实际上版本4.10比4.3新,因此需修改CloudCompare-master/CC/CGALSupport.cmake中第8行

原来为 if(${CGAL_MAJOR_VERSION}.${CGAL_MINOR_VERSION} LESS 4.3)

     message(SEND_ERROR "CC Lib requires at least CGAL 4.3")

        endif()

改为(如果版本小于4.3,则报错SEND_ERROR,否则只是提示STATUS)

if(NOT ${CGAL_MAJOR_VERSION} LESS 4 AND NOT ${CGAL_MINOR_VERSION} LESS 3)

 message(STATUS "CC Lib requires at least CGAL 4.3, Current CGAL Version is ${CGAL_MAJOR_VERSION}.${CGAL_MINOR_VERSION}")

else()

message(SEND_ERROR "CC Lib requires at least CGAL 4.3, Current CGAL Version is ${CGAL_MAJOR_VERSION}.${CGAL_MINOR_VERSION}")

endif()

3、如果编译QRANSAC_SD_PRIM_SHAPES_LIB插件,则在编译cloudcompare时,QRANSAC_SD_PRIM_SHAPES_LIB生成时会遇到static assertion failed with "<hash_map> is deprecated and will be REMOVED. Please use <unordered_map>. You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning." 这个错误,解决的方案有两个:(1)在c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\hash_map的地12行添加了#define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS 1,但是不建议这样改源码;(2)在QRANSAC_SD_PRIM_SHAPES_LIB的debug和release版本的工程属性->C++->预处理器中添加_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS  .

4、注释了CloudCompare-master\libs\qCC_glWindow\ccGLWindow.cpp(工程QCC_GL_LIB)中的1468行//|| s_oculus.mirror.texture

原来的版本中没有这行,而且这行只有在选中CMake中的OPTION的OPTION_USE_OCULUS_SDK才会生效,因为在该文件的上方是

//Oculus

#ifdef CC_OCULUS_SUPPORT

#include "oculus/ccOculus.h"

static OculusHMD s_oculus;

#endif //CC_OCULUS_SUPPORT

所以s_oculus只有在OPTION_USE_OCULUS_SDK才会被声明

继续阅读