說明
1. 本文主要用於配置OSG3.4.0在Qt5.6上使用MSVC2015進行編譯
l 前期工作:安裝好Qt5.6及MSVC2015,具體操作請參考:
http://blog.sina.com.cn/s/blog_89a45b020102whg2.html
l 本文在上一篇博客的基礎上進行環境搭建,也是在虛擬機中完成的。系統和環境變量都比較乾淨,因此環境搭建過程有較好的參考性。
2. 主要內容:
l 編譯osg3.4.0源代碼爲Qt5.6可以使用的庫文件
l 配置osg3.4.0在Qt中的環境,以一個工程作爲示例
文件準備
1. OpenSceneGraph 3.4.0源代碼:
2. Cmake-gui,下載安裝包
編譯庫文件:
1. 安裝CMake-gui,Install Options我選擇了“Add CMake to the system PATH for all users”,其它默認安裝
2. 以管理員身份打開“VS2015 X64 Native Tools Command”,進入一個命令行中
3. 從該命令行中進入CMKAE-gui.exe目錄下(默認安裝位置爲:C:\Program Files (x86)\CMake\bin),輸入cmake-gui.exe並執行,將彈出CMake-gui界面
4. 解壓縮osg3.4.0的源代碼到“C:\OpenSceneGraph-3.4.0”目錄,並新建一個工程目錄“C:\osg3.4.0”,設置CMake的“where is the source code”和“where to build the binaries”如圖所示,即剛纔的源代碼目錄和工程目錄。點擊Configure,後選擇工程項目爲“NMake Makefiles JOM”,點擊Finish後得到如圖所未,由於未將Qt的Jom添加到環境變量中,因此CMake失敗
5. 臨時添加Qt的Jom.exe以及qmake.exe到環境變量中。
l 關閉CMake-gui,
l 在剛纔的命令行中輸入“path %path%;C:\Qt\Tools\QtCreator\bin”並執行,Jom.exe在該目錄中
l 輸入“path %path%;C:\Qt\5.6\msvc2015_64\bin”並執行,qmake.exe在該目錄中
l 再次用命令行打開CMake-gui,點擊Config,成功了一半
6. 重新配置CMake-gui
l 修改CMAKE-INSTALL_PREFIX參數,該目錄爲生成的庫文件目錄,將其修改到期望的地方,本文設置爲“C:/osg-lib”
l 勾選BUILD_OPENTHREADS_WITH_QT
l 修改CMAKE_BUILD_TYPE,默認爲Debug版本,也可以修改爲Release版本,本文以Debug版本爲例,Release好像有點問題,待研究
l 點擊Configure再次配置
l Configuring done後點擊Genirate生成工程,Genorating done後關閉CMAKE-GUI。
l 可以看到工程目錄下出現了很多文件,這些文件可以被Jom編譯
7. 編譯過程
l 從命令行中進入工程目錄,並執行“jom”開始進入漫長的編譯時間。
l 編譯完成後再次輸入並執行“jom install”,開始生成庫文件*.lib
8. 至此,Debug版本的庫文件已經生成,在目錄C:\osg-lib下
9. 關於Release版本的庫
l 只需要在第6步中將CMAKE_BUILD_TYPE參數修改爲Release, 將CMAKE_DEBUG_POSTFIX的參數d刪除即可,其它操作相同
l 上面將CMAKE_DEBUG_POSTFIX的參數d刪除主要是爲了避免生成的庫文件後面帶有d,比如osgd.lib會變成osg.lib,爲了將Debug的庫與Release庫分開
Qt5.6下的OSG工程示例
說明:
由於Qt完全基於C++,因此OSG在MSVC下能運行的示例程序,均可直接在Qt下運行。
1. 新建一個Qt工程,如下圖所示,採樣console工程,編譯套件務必使用MSVC2015 64bit
2. 向工程中添加庫文件
l 在工程名上右鍵“添加庫”->“外部庫”,隨便在剛纔生成的庫文件中找個.lib打開,如下圖配置
l 修改自動生成的.pro文件的庫配置部分,強行將所有的庫文件包含到工程中,建議採用相對路徑,採用絕對路徑可能會導致無法讀取到頭文件(很奇怪)
3. 添加main.cpp文件,將osg源代碼中的osggeometry.cpp的code複製到工程中的main.cpp中即可,
4. 由於缺少osg的dll文件,程序估計不能運行,有兩種方法解決:庫文件在目錄C:\osg-lib\bin中
l 將庫文件的dll文件(包括osgPlugins-3.4.0文件夾)全部放到QT生成的可執行文件的要目錄中,如圖
l 或者將庫文件的目錄包括到環境變量中,如圖
5. 運行Qt程序即可
至此已經可以使用Qt Create進行OSG編程了,關於如何將OSG嵌入到Qt Widget裏,後面有空再寫個教程