最近在編譯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才會被聲明