天天看點

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才會被聲明

繼續閱讀