缑莺韵 发表于 2025-6-4 19:36:00

CMake构建学习笔记10-OsgQt库的构建

笔者使用的OsgQt库是Github上openscenegraph仓库中托管的项目(地址),该库的功能是将Osg嵌入到Qt窗体中。不过该库的使用总是有点问题,具体的介绍笔者在之前的两篇博文中论述过:
OSG嵌入QT的简明总结
OSG嵌入QT的简明总结2
因此,这里笔者还是将这个库分成了两个版本进行构建。构建topic/Qt4分支的关键代码如下所示:
#配置CMake      
cmake .. -G "$Generator" -A x64 `
    -DCMAKE_BUILD_TYPE=RelWithDebInfo `
    -DCMAKE_PREFIX_PATH="$InstallDir" `
    -DCMAKE_INSTALL_PREFIX="$InstallDir" `
    -DOPENTHREADS_LIBRARY_RELEASE="$InstallDir/lib/OpenThreads.lib" `
    -DOSG_LIBRARY_RELEASE="$InstallDir/lib/osg.lib" `
    -DOSGDB_LIBRARY_RELEASE="$InstallDir/lib/osgDB.lib" `
    -DOSGGA_LIBRARY_RELEASE="$InstallDir/lib/osgGA.lib" `
    -DOSGUTIL_LIBRARY_RELEASE="$InstallDir/lib/osgUtil.lib" `
    -DOSGTEXT_LIBRARY_RELEASE="$InstallDir/lib/osgText.lib" `
    -DOSGVIEWER_LIBRARY_RELEASE="$InstallDir/lib/osgViewer.lib" `
    -DOSGWIDGET_LIBRARY_RELEASE="$InstallDir/lib/osgWidget.lib" `
    -DCMAKE_RELWITHDEBINFO_POSTFIX=""

# 构建阶段,指定构建类型
cmake --build . --config RelWithDebInfo -- /m:8

# 安装阶段,指定构建类型和安装目标
#cmake --build . --config RelWithDebInfo --target install

# 自定义安装
# 复制include文件夹
Copy-Item -Path "../include/osgQt" -Destination "$InstallDir/include" -Recurse -Force
# 复制输出文件
Copy-Item -Path "./lib/osgQt5.lib" -Destination "$InstallDir/lib" -Force
Copy-Item -Path "./packaging/pkgconfig/openscenegraph-osgQt5.pc" -Destination "$InstallDir/lib/pkgconfig" -Force
Copy-Item -Path "./bin/osg145-osgQt5.dll" -Destination "$InstallDir/bin" -Force
Copy-Item -Path "./bin/osg145-osgQt5.pdb" -Destination "$SymbolDir" -Forcetopic/Qt4是旧的版本,所以不能自动找到安装好的OSG库,因此需要手动指定OSG_LIBRARY_RELEASE等OSG库文件的路径。另外,这个库对于RelWithDebInfo类型的构建安装有点问题,因此没有使用CMake安装的方式,而是采用自定义的脚本进行安装。如果是Debug或者Release类型,可以直接使用CMake安装的方式。
最新的主分支构建的关键指令如下所示:
#配置CMake      
cmake .. -G "$Generator" -A x64 `
    -DCMAKE_BUILD_TYPE=RelWithDebInfo `
    -DCMAKE_PREFIX_PATH="$InstallDir" `
    -DCMAKE_INSTALL_PREFIX="$InstallDir" `
    -DCMAKE_RELWITHDEBINFO_POSTFIX="" `
    -DBUILD_OSG_EXAMPLES=OFF

# 构建阶段,指定构建类型
cmake --build . --config RelWithDebInfo -- /m:8

# 安装阶段,指定构建类型和安装目标
#cmake --build . --config RelWithDebInfo --target install

# 自定义安装
# 复制include文件夹
Copy-Item -Path "../include/osgQOpenGL" -Destination "$InstallDir/include" -Recurse -Force
# # 复制输出文件
Copy-Item -Path "./lib/osgQOpenGL.lib" -Destination "$InstallDir/lib" -Force
Copy-Item -Path "./packaging/pkgconfig/openscenegraph-osgQt.pc" -Destination "$InstallDir/lib/pkgconfig" -Force
Copy-Item -Path "./bin/osg145-osgQOpenGL.dll" -Destination "$InstallDir/bin" -Force
Copy-Item -Path "./bin/osg145-osgQOpenGL.pdb" -Destination "$SymbolDir" -Force新版本对OSG库的查找没有问题。不过RelWithDebInfo类型的构建安装还是有点问题,因此还是采用自定义脚本的方式进行安装。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

涂流如 发表于 2025-11-17 22:23:43

收藏一下   不知道什么时候能用到

少琼 发表于 2025-12-8 16:13:33

感谢发布原创作品,程序园因你更精彩

劳暄美 发表于 2025-12-13 00:52:00

谢谢分享,试用一下

骆贵 发表于 2025-12-14 11:21:32

这个好,看起来很实用

黎瑞芝 发表于 2025-12-19 20:27:17

这个有用。

沃盼盼 发表于 2025-12-28 01:39:21

这个好,看起来很实用

瘴锲如 发表于 2026-1-3 19:50:06

分享、互助 让互联网精神温暖你我

岭猿 发表于 2026-1-14 19:38:29

用心讨论,共获提升!

颜才 发表于 2026-1-15 16:14:44

谢谢分享,试用一下

寥唏 发表于 2026-1-16 20:43:00

yyds。多谢分享

杠氯 发表于 2026-1-19 09:45:30

收藏一下   不知道什么时候能用到

套缈 发表于 2026-1-19 09:56:39

喜欢鼓捣这些软件,现在用得少,谢谢分享!

褥师此 发表于 2026-1-21 19:43:00

感谢分享

呶募妙 发表于 2026-1-25 09:01:32

热心回复!

兼罔 发表于 6 天前

感谢分享,学习下。

哈妙思 发表于 前天 20:22

很好很强大我过来先占个楼 待编辑

仟仞 发表于 前天 20:23

过来提前占个楼

电棘缣 发表于 11 小时前

新版吗?好像是停更了吧。

指陡 发表于 9 小时前

感谢发布原创作品,程序园因你更精彩
页: [1]
查看完整版本: CMake构建学习笔记10-OsgQt库的构建