首先,強烈建議先根據官方文檔做好準備工作,準備相關的依賴庫,下面這個是另一個作者的準備過程,可以參考;
第三方依賴的編譯以及OGRE的前期準備工作在這 寫的很詳細,雖然是英文的,但是想編譯源碼的估計都能看懂;
文中提到的“Fix conflicting definition of snprintf”我並沒有需要用到;
編譯依賴庫的過程就不多說了,上面的鏈接中有詳細的說明怎麼做,並且不會出現太大的問題,下面就來說說編譯OGRE源碼的一些問題;
首先先把使用cmake創建源碼編譯工程的截圖貼上來:
這裏面的一些選項和上面鏈接中是不一樣的,不過大體也就是對應左邊的項在右邊填上依賴庫的完整路徑,這裏我是把Debug版本和Release版本都添加了;
然後就是打開OGRE.sln準本開始源碼編譯了;
如果你是直接開始編譯的,並且之前的依賴庫準備工作沒有出錯的話,那麼你應該會遇到以下錯誤:
嚴重性代碼說明
項目 文件
行禁止顯示狀態
錯誤 C2661“std::condition_variable::wait_until”: 沒有重載函數接受 3 個參數Sample_VolumeTexC:\Program Files (x86)\Microsoft Visual Studio14.0\VC\include\mutex734
錯誤 C2661“std::condition_variable::wait_until”: 沒有重載函數接受 3 個參數Sample_VolumeTexC:\Program Files (x86)\Microsoft Visual Studio14.0\VC\include\mutex734
嚴重性代碼說明
項目 文件
行禁止顯示狀態
錯誤 C2661“std::condition_variable::wait_until”: 沒有重載函數接受 3 個參數Sample_VolumeTexC:\Program Files (x86)\Microsoft Visual Studio14.0\VC\include\mutex861
錯誤 C2661“std::condition_variable::wait_until”: 沒有重載函數接受 3 個參數Sample_VolumeTexC:\Program Files (x86)\Microsoft Visual Studio14.0\VC\include\mutex861
這個貌似是這個版本源代碼中的一個bug,這裏我的做法是直接卸載項目 Sample_VolumeTex 反正他只是一個樣例項目----其實是我當時看源碼看了半天沒發現錯誤,然後不知道怎麼修復。。,改完這裏呢,還需要在 源代碼目錄(編譯項目目錄,不是解壓的源代碼目錄)下的 /Samples文件夾中的 cmake_install.cmake文件中把
第74行: include("D:/VSProject/build/Ogre/Samples/VolumeTex/cmake_install.cmake") 用#給註釋掉;
或許還會有: 官方論壇上也有人提到過這種錯誤
Error 1 error MSB3073: The command "setlocal
"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe" -DBUILD_TYPE=Release -P cmake_install.cmake
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
:VCEnd" exited with code 1. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets 113
或者相似的錯誤,這裏,我查了一下,大概就是項目生成的順序不對,或者對相關目錄沒有寫的權限,解決方法大概是以下兩種;
1,管理員身份運行VS
2,調整項目生成順序
但是悲劇的是我兩種方法都沒有解決問題,這裏我參考的是 這篇博客的作者的做法,然後就順利解決了;
哦對了,如果是編譯是選擇了發佈版還需要安裝 NSIS工具,這裏安裝方法就不多做解釋了;
最後運行SampleBrowser.exe的時候如果出現:
的錯誤,直接把之前編譯依賴庫時生成的SDL2.dll複製粘貼過來就行了,當然對應Debug版或Release版;
在這貼一個我編譯好的文件 鏈接:http://pan.baidu.com/s/1nuJBVpZ 密碼:0766