在Windows下编译Saba
今天写一篇环境配置的博客,感觉这种博客比较好写
Saba是一个用于加载MMD(MikuMikuDance)模型、动作文件的C++库。下面我们在Windows下编译这个库。为了在Windows下编译Saba, 需要提前安装好cmake和Visual Studio 2022(其它版本的Visual Studio也可以)。
cmake使用小技巧
使用cmake生成项目时,常见的做法是:
1. 在源代码的根目录下新建一个子目录(这个子目录通常命名为build).
2. 在新建的子目录中使用cmake生成项目.
即以下过程:
# 当前处于源代码的根目录下, 这个目录下会有一个名为CMakeLists.txt的文件
mkdir build # 新建子目录build
cd build # 进入这个子目录
cmake .. # 使用cmake生成项目(由于我们当前在build目录, 因此CMakeLists.txt在上一级目录,我们使用..告诉cmake, CMakeLists.txt在上一级目录中)
为了编译saba, 需要首先编译bullet和glfw.
编译bullet
首先,获取bullet的源代码,当前(2023/04/03)最新的版本为PyBullet 3.2.5, 可以在这里获取。新建一个目录build用于编译:
mkdir build
cd build
执行以下命令:
cmake -G "Visual Studio 17 2022" `
-D CMAKE_INSTALL_PREFIX='../../bullet' `
-D INSTALL_LIBS=ON `
-D USE_MSVC_RUNTIME_LIBRARY_DLL=ON `
-D BUILD_CPU_DEMOS=OFF `
-D BUILD_OPENGL3_DEMOS=OFF `
-D BUILD_BULLET2_DEMOS=OFF `
-D BUILD_UNIT_TESTS=OFF `
..
这里注意以下几点:
- 如果你安装的不是Visual Studio 2022, 这里
-G需要换成其它参数,输入cmake -G可以查看都有哪些选项; - 如果你的Windows系统中没有其它开发工具(例如MinGW),
-G "Visual Studio 17 2022"可以不写; CMAKE_INSTALL_PREFIX指定安装库的位置,你可以随意指定;- Windows下的Powershell输入多行时使用
`连接,有的终端使用^连接; - 最后的两点
..表示上一级目录,千万不要丢了哦.
- 如果你安装的不是Visual Studio 2022, 这里
完成后,依次执行以下命令:
cmake --build . --config Debug --target ALL_BUILD
cmake --build . --config Debug --target INSTALL
cmake --build . --config Release --target ALL_BUILD
cmake --build . --config Release --target INSTALL
大功告成后,之前指定的CMAKE_INSTALL_PREFIX目录下会生成所需的头文件和库文件。
编译GLFW
GLFW可在此处下载,当前(2023/04/03)最新版本为3.3.8.
下载glfw-3.3.8的源代码,在当前文件下新建文件夹build:
mkdir build
cd build
依次执行如下命令:
cmake -D CMAKE_INSTALL_PREFIX="../../glfw" .. # 这里就没有指定-G选项
cmake --build . --config Debug --target INSTALL
cmake --build . --config Release --target INSTALL
编译Saba
首先,获取Saba的源代码:
git clone https://github.com/benikabocha/saba.git
我们将前面两步得到的bullet和glfw放在saba/external目录中。
cmake -G "Visual Studio 17 2022" `
-D SABA_BULLET_ROOT=您的Bullet库路径 `
-D SABA_GLFW_ROOT=您的GLFW库路径 `
..
编译完成之后,在build目录下有一个名为saba.sln的文件,这是Visual Studio的工程文件,打开这个文件。
首先,右键解决方案资源管理器中的saba_viewer:

在打开的菜单栏中,单击“设为启动项目”:

最后,点击绿色的“本地Windows调试器”按钮,就能看到以下窗口:

拖动MMD模型到窗口,你就能看到渲染后的模型啦~
好吧,这种文章也不是太好写!
在Windows下编译Saba的更多相关文章
- [转] Windows下编译OpenSSL
简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...
- Windows下编译objective-C
Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode 目录 ...
- 在Windows下编译FFmpeg详细说明
MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...
- 如何在WINDOWS下编译BOOST C++库 .
如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25 写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0. 1)下载boost ...
- 在Windows下编译OpenSSL(VS2005和VC6)
需要说明的是请一定安装openssl-0.9.8a . openssl-1.0.0我没有编译成功. 如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1.安装Activ ...
- windows下编译java源文件的编码错误
import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...
- Windows下编译SDL
Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...
- Windows下编译安装 FFmpeg
在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...
- windows下编译php7图形库php_ui.dll
CSDN博客 具有图形化编程才有意思,这几天看到了php ui 图形扩展,只是现在只能下载php 7.1的 本次教程编译php7.2.6的 php ui 要是linux下编译起来比较简单 但是 win ...
- 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
随机推荐
- 【每日一题】2.合并回文子串 (字符串处理 + 区间DP)
题目链接:Here 遇到这种数据范围较小的计数问题应该优先考虑dp,本题就是如此. 那么应该怎么样考虑转移呢? 首先最后C中的那个价值最大的子串一定是由字符串A的一个区间和字符串B的一个区间合并得到的 ...
- 【体验有奖】玩转 AIGC,函数计算 x 通义千问预体验,一键部署AI应用赢Airpods
玩转 AIGC,基于函数计算 FC 部署通义千问预体验 从文字生成到图片生成,AIGC 的创造力让人惊叹,更多的人开始探索如何使用 AI 提高生产效率,激发更多创作潜能,然而在实际应用中,AI 技术的 ...
- P5729 【深基5.例7】工艺品制作
1.题目介绍 [深基5.例7]工艺品制作 题目描述 现有一个长宽高分别为 \(w,x,h\) 组成的实心玻璃立方体,可以认为是由 \(1\times1\times1\) 的数个小方块组成的,每个小方块 ...
- [转帖]Sqlserver数据库中char、varchar、nchar、nvarchar的区别及查询表结构
https://www.cnblogs.com/liuqifeng/p/10405121.html varchar 和 nvarchar区别: varchar(n)长度为 n 个字节的可变长度且非 U ...
- [转帖]十九、Linux性能优化实战学习笔记- 为什么系统的Swap变高了?
目录 一.什么是文件页?什么是脏页?什么是匿名页? 二.linux swap原理 换出 换入 三.内存回收的时机 1.直接内存回收 2.kswapd0内核线程 四.NUMA 与 Swap关系 五.sw ...
- [转帖]AMD处理器ZEN一代之国产化海光
https://huataihuang.gitbook.io/cloud-atlas-draft/os/linux/kernel/cpu/amd_hygon 2020年国产化处理器受到了广泛的关注 ...
- [转帖]awk命令 去掉重复行
https://developer.aliyun.com/article/885946?spm=a2c6h.24874632.expert-profile.263.7c46cfe9h5DxWK lin ...
- [转帖]Native Memory Tracking 详解(2):追踪区域分析(一)
https://www.modb.pro/db/529363 上篇文章 Native Memory Tracking 详解(1):基础介绍 中,分享了如何使用NMT,以及NMT内存 & OS内 ...
- Oracle 以及 达梦数据库简单查询所有表行数的存储过程
1. 今天有一个场景需要查询一个数据库实例下面所有的表的行数. 本来想查询 user_tables 视图 但是发现 这个视图里面 达梦数据库 里面存的是null的.. 百度之后发现一个解决方案是 使用 ...
- 如何写出高质量的代码 data 组件 函数 注释 命名 变量的次数
今天在将以前文件上传的地方全部 改为新的文件上传的api. 在改动的过程中,发现代码有很多不合理的地方 在改的时候,因此也是非常的痛苦的哈. 比如说在data中我有太多的flag标识.俩控制元素的显示 ...