CMake构建学习笔记10-OsgQt库的构建
笔者使用的OsgQt库是Github上openscenegraph仓库中托管的项目(地址),该库的功能是将Osg嵌入到Qt窗体中。不过该库的使用总是有点问题,具体的介绍笔者在之前的两篇博文中论述过:
因此,这里笔者还是将这个库分成了两个版本进行构建。构建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" -Force
topic/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类型的构建安装还是有点问题,因此还是采用自定义脚本的方式进行安装。
分类:
C++
, C++ / CMake
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
2019-08-28 OSG与Shader的结合使用