Windows下QT与OSG开发环境配置

最近想尝试使用QT开发图形用户界面,OSG负责三维展示的解决方案,于是研究了一下Windows下OSG的编译安装配置,以及在QT中集成OSG的配置过程。过程记录如下:

QT+OSG开发环境配置

QT+OSG开发环境配置将使用QT Creator集成环境进行图形用户界面开发,使用Desktop Qt 5.9.8 MSVC2017 64构建套件编译链接调试C++程序。

Visual Studio Community 2017 下载安装

下载安装Visual Studio Community 2017的“使用C++的桌面开发”工作负载。这将为QT提供MSVC2017 64bit编译套件。

CDB 调试器下载安装

没有安装CDB调试器,QT的Desktop Qt 5.9.8 MSVC2017 64构建套件前会出现感叹号,并且使用该构建套件调试时会报“Unable to create a debugging engine”错误。CDB调试器下载安装方法参考QT - OSG 开发环境配置

QT 5.9.8 下载安装

QT 5.9.8是 LTS 版本,其下载安装请参考Qt5配置开源GSL数学库需要注意的是,QT 5.9.8安装过程,选择MSVC2017 64bit编译组件,如图1所示。

QT 5.9.8安装选择MSVC2017 64bit编译组件

图1 QT 5.9.8安装选择MSVC2017 64bit编译组件

cmake下载安装

到 cmake 官网下载安装 cmake,用于osg的编译安装。

下载编译安装OSG

下载OSG及相关软件

Windows平台编译安装OSG需下载从OSG官网以下资料:

  • OpenSceneGraph 3.6.4源代码
  • OpenSceneGraph-Data-3.4.0,因为找不到3.6.4版本的数据
  • 3rdParty_VS2017_v141_x64_V11_full

配置OSG

打开cmake,选择osg源代码路径和osg源代码构建的路径,再点击“configure”按钮,选择Visual Studio 15 2017 Win64编译套件,配置osg如图2所示。

cmake编译osg配置

图2 cmake编译osg配置

需要配置的地方主要有:

  • ACTUAL_3rdparty_DIR:配置第三方库的目录
  • Build_OSG_EXAMPLES:选中即编译安装OSG的示例。
  • CMAKE_INSTALL_PREFIX:设置OSG的安装目录,通常放到C盘以外的地方,防止因权限问题安装失败。

配置完成后,再持续点击“configure”按钮,知道红色警告消失。然后点击“Generate”按钮生成vs2017工程。

编译OSG

在cmake中点击“Open Project”按钮,即使用 VS2017 打开 build 文件夹下的工程,点击:生成 -> 批生成 -> 生成 Debug 和 Release 版本的 All_BUILD 即可。

安装OSG

右击解决方案的 Install 项目,点击生成,然后 Debug 平台的库文件就开始安装了,同理选择 Release 平台再重复安装。之后就可以在安装路径中看到编译的库文件了,安装路径由变量CMAKE_INSTALL_PREFIX的配置决定。

配置环境变量

OSG官方文档 Windows Compiling with Visual Studio指出,OSG安装完成后需要配置如下环境变量:

1
2
3
4
5
6
7
8
OSG_ROOT points to the base of the OSG file structure (the directory that contains include, src etc. subdirectories)
OSG_BIN_PATH = %OSG_ROOT%\bin
OSG_INCLUDE_PATH = %OSG_ROOT%\include
OSG_LIB_PATH = %OSG_ROOT%\lib
OSG_SAMPLES_PATH = %OSG_ROOT%\share\OpenSceneGraph\bin
OSG_FILE_PATH = ???\OpenSceneGraph-Data-X.X
OPENSCENEGRAPH_VERSION = 3.6.4
PATH 添加:%OSG_ROOT%\bin;%OSG_ROOT%\bin\osgPlugins-%OPENSCENEGRAPH_VERSION%; 这两个是配置 bin 和插件的路径。

OSG测试

命令行测试

打开 cmd 命令行,输入osgversion,输出当前 osg 版本说明环境变量配置成功了,再来看看能不能导入模型文件,接着键入:

1
osgviewer cow.osg

这里可能会提示系统缺少 zlibd.dll,解决方法很简单:

  • 拷贝第三方库的 dll 目录下的 zlib.dll 和 zlibd.dll 到 OSG 安装目录的 bin 目录中。
  • 拷贝第三方库的 lib 目录下的 zlib.dll 和 zlibd.dll 到 OSG 安装目录的 lib 目录中。

这时重新键入上面的命令,就可以看到一头经典的 3D 牛了,说明 OSG 安装成功了。

QT 配置 OSG 库路径

新建一个 QT 的控制台项目,编辑 .pro 文件,加入 OSG 库的路径:

1
2
3
4
5
6
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../OpenSceneGraph/lib/ -lOpenThreads -losg -losgDB -losgUtil -losgGA  -losgViewer -losgText
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../OpenSceneGraph/lib/ -lOpenThreadsd -losgd -losgDBd -losgUtild -losgGAd -losgViewerd -losgTextd
else:unix: LIBS += -L$$PWD/../../../OpenSceneGraph/lib/ -lOpenThreads -losg -losgDB -losgUtil -losgGA -losgViewer -losgText

INCLUDEPATH += $$PWD/../../../OpenSceneGraph/include
DEPENDPATH += $$PWD/../../../OpenSceneGraph/lib

main.cpp 如下:

1
2
3
4
5
6
7
8
9
#include <osgViewer/Viewer>
#include <osgDB/ReadFile>

int main(int argc, char *argv[])
{
osgViewer::Viewer viewer;
viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
return viewer.run();
}

运行,出来一头 3D 牛,即配置成功。

参考链接

  1. QT - OSG 开发环境配置,by 程序小哥.
  2. Qt5配置开源GSL数学库,by jackhuang.
  3. Ubuntu16.04编译安装OSG,by jackhuang.
  4. Windows Compiling with Visual Studio,by OpenSceneGraph.
  5. Visual_Studio_Community_2017离线安装,by jackhuang.
  6. Qt-Creator常见问题,by XenonSec.
  7. Visual Studio: MSB3073 error exited with code 1,by stackoverflow.
  8. Qt5.7 + VS2015 环境搭建,by 一去丶二三里.
  9. OSG学习:WIN10系统下OSG+VS2017编译及运行,by 路人甲JIA.
  10. error LNK2019: 无法解析的外部符号 “__declspec(dllimport) public,by OSG_weiguoying.
  11. 应用篇之dll lib pdb和头文件,by 阿兵-AI医疗.
  12. GL.h文件提示报错,by Parkergh.
  13. #undef 的用法及其意义,by DinnerHowe.