compiler
编译/构建osgVerse与OpenSceneGraph,使用Setup脚本切换图形接口平台(DEFAULT/CORE/GLES2/GLES3/WEBGL1/WEBGL2/ANDROID),处理编译失败、重置编译、依赖库安装等编译相关问题。当用户提到编译、构建、Setup脚本、构建失败、切换图形平台、重置编译时使用。
소스 정보
- 저장소
- xarray/osgverse
- 최근 소스 활동
- 2026년 8월 14일 09:24
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 464
- 포크
- 77
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SKILL.md 표시 중
SKILL.md
소스 지침 · 읽기 전용 미리보기- name
- compiler
- description
- 编译/构建osgVerse与OpenSceneGraph,使用Setup脚本切换图形接口平台(DEFAULT/CORE/GLES2/GLES3/WEBGL1/WEBGL2/ANDROID),处理编译失败、重置编译、依赖库安装等编译相关问题。当用户提到编译、构建、Setup脚本、构建失败、切换图形平台、重置编译时使用。
- homepage
- https://gitee.com/xarray/osgverse
- metadata
- {"nanobot":{"emoji":"🌤️","requires":{"bins":"[Truncated]"}}}
# Compilation
在当前 osgVerse 仓库根目录下工作(或用户指定的工作目录),遵循 `.codebuddy` 与 `AGENTS.md` 中已有的工程约定,不要在其他位置创建或修改文件。
osgVerse的代码仓库地址为:https://gitee.com/xarray/osgverse 或者 https://github.com/xarray/osgverse
正常情况下,签出代码请执行
```bash
git clone https://gitee.com/xarray/osgverse.git
```
每次重新编译代码之前,请先尝试更新仓库代码,以获取最新的版本
```bash
cd osgverse
git pull
```
目前,osgVerse可以编译并运行在Windows,Linux,MacOSX,Android平台上,或者通过Emscripten编译为WebAssembly代码(即WASM,在浏览器端支持WebGL1和WebGL2),并且可以使用OpenGL Compatible,OpenGL Core,OpenGL ES或者Vulkan作为底层图形接口平台。如果要编译到MacOSX平台,或者使用Vulkan作为底层接口,则需要预先准备Google Angle库作为必要依赖库。
编译的中间文件和结果文件目录自动设置为osgVerse根目录下的`build`目录。如有必要,可以直接删除该目录中对应的编译结果子目录以重置编译流程。
如果要在GLES2和GLES3之间切换,或者在WEBGL1和WEBGL2之间切换,则必须重置编译流程。
osgVerse提供了自动化的Setup编译脚本,建议可以使用脚本来完成具体的编译流程
具体图形接口的支持情况和生成结果如下:
- DEFAULT: 以OpenGL Compatible为底层接口,执行编译;中间文件包括`build/3rdparty`,`build/osg_def`,`build/verse_def`,编译结果位于`build/sdk`
- CORE: 以OpenGL Core为底层接口,执行编译;中间文件包括`build/3rdparty`,`build/osg_core`,`build/verse_core`,编译结果位于`build/sdk_core`
- GLES2: 以OpenGL ES 2.0为底层接口,此时Setup脚本需要带第2参数,即libGLESv2和libEGL库所在目录;中间文件包括`build/3rdparty`,`build/osg_es`,`build/verse_es`,编译结果位于`build/sdk_es`
- GLES3: 以OpenGL ES 3.0为底层接口,此时Setup脚本需要带第2参数,即libGLESv2和libEGL库所在目录;中间文件包括`build/3rdparty`,`build/osg_es`,`build/verse_es`,编译结果位于`build/sdk_es`
- WEBGL1: 以WebGL 1为底层接口编译到WASM,此时Setup脚本需要带第2参数,即emscripten工程的根目录(emscripten需要已经安装和激活);中间文件包括`build/3rdparty_wasm`,`build/osg_wasm`,`build/verse_wasm`,编译结果位于`build/verse_wasm`
- WEBGL2: 以WebGL 2为底层接口编译到WASM,此时Setup脚本需要带第2参数,即emscripten工程的根目录(emscripten需要已经安装和激活);中间文件包括`build/3rdparty_wasm`,`build/osg_wasm2`,`build/verse_wasm2`,编译结果位于`build/verse_wasm2`
- ANDROID: 以OpenGL ES 3.0为底层接口编译到Android平台,用户需要准备好`java`,`gradle`程序,并设置环境变量ANDROID_SDK和ANDROID_NDK来定义Android依赖库的位置;中间文件包括`build/3rdparty_android`,`build/osg_android`,`build/verse_android`
## Dependencies
osgVerse默认可以从系统目录(例如`/usr/include`,`/usr/lib`等)检索可能的依赖库位置,也可以从与osgVerse根目录同级的`Dependencies`目录检索用户提供的依赖库。根据用户操作系统和架构的不同,具体依赖库所在的子目录名称也各不相同。主要包括:
- `Dependencies/x86`: Windows/Linux桌面系统,32位
- `Dependencies/x64`: Windows/Linux桌面系统,64位
- `Dependencies/uwp`: Windows UWP系统
- `Dependencies/aarch64`: ARM Linux系统,64位
- `Dependencies/apple`: Mac OSX系统
- `Dependencies/wasm`: 为WebAssembly平台编译,32位
- `Dependencies/wasm64`: 为WebAssembly平台编译,64位
- `Dependencies/android`: 为Android平台编译
- `Dependencies/ios`: 为IOS平台编译
对于Windows系统,还可能根据Visual Studio的版本不同,设置第三级子目录,例如`Dependencies/x64/msvc16`(VS2019),`Dependencies/x64/msvc17`(VS2022)。最后一级子目录中会至少包含include和lib两个子文件夹,用于定位依赖库的头文件路径和库文件路径。
osgVerse可以使用的依赖库如下列表所示,除了OpenSceneGraph,其它所有的依赖库都不是必需的。在编译过程中,如果可以快速地从仓库获取到依赖库,则尝试先安装依赖库;否则默认略过即可。
- OpenSceneGraph: 由Setup脚本自动从Git仓库下载
- Bullet: Linux端执行`apt-get install libbullet-dev`
- FFmpeg: Linux端执行`apt-get install libavcodec-dev libavformat-dev libavutil-dev libavdevice-dev libswscale-dev`
- libDraco: Linux端执行`apt-get install libdraco-dev`
- libCEF: 可以从网站 https://cef-builds.spotifycdn.com/index.html 下载预编译库
- libIGL: 可以从网站 https://github.com/libigl/libigl/releases 下载预编译库
- libosmium: Linux端执行`apt-get install libosmium2-dev`
- libwebp: Linux端执行`apt-get install libwebp-dev`
- mimalloc: Linux端执行`apt-get install libmimalloc-dev`
- netCDF-C: Linux端执行`apt-get install libnetcdf-dev`
- NVIDIA CUDA SDK: 可以从网站 https://developer.nvidia.com/cuda-downloads 下载预编译库
- NVIDIA Video SDK: 可以从网站 https://developer.nvidia.com/video-codec-sdk 下载预编译库
- ODBC: Linux端执行`apt-get install unixodbc-dev`
- OpenVDB: Linux端执行`apt-get install libopenvdb-dev libboost-dev`
- osgEarth: 需要自己从源代码编译,地址 https://github.com/pelicanmapping/osgearth
- Python: Linux端执行`apt-get install libpython3.10-dev`
- Qt: 可以从网站 https://download.qt.io/official_releases 下载预编译库
- SDL2: Linux端执行`apt-get install libsdl2-dev`
- ZLMediaKit: 需要自己从源代码编译,地址 https://github.com/ZLMediaKit/ZLMediaKit
## Compile under Windows
默认系统中已有`cmake`,`git`这些指令,不需要再单独搜索它们的路径。然后通过Visual Studio的Command Prompt进入终端界面。
进入脚本模式,为了避免在编译过程中等待用户输入,需要带一个CMD参数。这里的<CMD>可以是: DEFAULT,CORE,GLES2,GLES3,WEBGL1,WEBGL2,ANDROID,对应之前所述的具体图形接口。
```bash
Setup.bat <CMD>
```
脚本模式可以带第2个参数,例如
```bash
Setup.bat <CMD> <path_to_gles_libs>
# 此处假定path_to_gles_libs是libGLESv2.lib和libEGL.lib库所在目录
```
脚本会自动下载OpenSceneGraph的代码仓库并放置于osgVerse根目录的同级目录。脚本执行时会自动覆写OpenSceneGraph目录下的部分文件,例如CMakeLists.txt,正常情况下该文件的内容应当超过1000行。
每次启动脚本时,需要检查该文件,如果它的行数过短,有可能已经损坏,此时需要直接删除OpenSceneGraph目录,并再次运行Setup脚本,以重新下载。
## Compile under Linux
Linux模式下,脚本文件名改为`Setup.sh`,除此之外一切的参数和注意事项均不变。
# Tests
进入编译的结果目录,例如`build/sdk`,检查其中是否有`bin`,`include`,`lib`子目录,且是否存在`lib/cmake/osgVerse/osgVerseConfig.cmake`文件。如果存在,则编译已经成功得到结果。
CORE模式请检查`build/sdk_core`目录,GLES2或者GLES3模式请检查`build/sdk_es`目录,以此类推。
进入`bin`目录,运行下面的指令来测试基础的PBR流水线运行结果
```bash
./osgVerse_Viewer
```
通过鼠标左键拖动,缓缓旋转模型,观察其阴影、光照效果以及背景天空盒是否均存在,且渲染结果是否流畅自然。
按F键将场景窗口化,观察是否出现渲染问题;再次按F键将场景最大化,观察是否出现渲染问题。
如果结果正常,则按ESC退出;否则请说明情况。
GitHub에서 보기