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

笔者使用的OsgQt库是Github上openscenegraph仓库中托管的项目(地址),该库的功能是将Osg嵌入到Qt窗体中。不过该库的使用总是有点问题,具体的介绍笔者在之前的两篇博文中论述过:

OSG嵌入QT的简明总结
OSG嵌入QT的简明总结2

因此,这里笔者还是将这个库分成了两个版本进行构建。构建topic/Qt4分支的关键代码如下所示:

shell 复制代码
#配置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安装的方式。

最新的主分支构建的关键指令如下所示:

shell 复制代码
#配置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类型的构建安装还是有点问题,因此还是采用自定义脚本的方式进行安装。

相关推荐
刚入坑的新人编程14 分钟前
暑期算法训练.9
数据结构·c++·算法·leetcode·面试·排序算法
好奇龙猫37 分钟前
日语学习-日语知识点小记-构建基础-JLPT-N3阶段(9):ようなN
学习
牵牛老人38 分钟前
OpenCV学习探秘之二 :数字图像的矩阵原理,OpenCV图像类与常用函数接口说明,及其常见操作核心技术详解
opencv·学习·矩阵
破刺不会编程2 小时前
linux线程概念和控制
linux·运维·服务器·开发语言·c++
程序员编程指南2 小时前
Qt OpenGL 集成:开发 3D 图形应用
c语言·数据库·c++·qt·3d
flashier2 小时前
ESP32学习笔记_Components(1)——使用LED Strip组件点亮LED灯带
学习·esp32·led·led灯带·esp32组件
Shining05962 小时前
Datawhale AI 夏令营—科大讯飞AI大赛(大模型技术)—让大模型理解表格数据(列车信息表)
人工智能·学习·其他
小徐不徐说3 小时前
动态规划:从入门到精通
数据结构·c++·算法·leetcode·动态规划·代理模式
钱彬 (Qian Bin)3 小时前
《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——6. 传统算法实战:用OpenCV测量螺丝尺寸
教程·cmake·qml·qt quick·工业软件·工业瑕疵检测·qt6.9.1
希望奇迹很安静4 小时前
SSRF_XXE_RCE_反序列化学习
学习·web安全·ctf·渗透测试学习