今天写一篇环境配置的博客,感觉这种博客比较好写

  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 `
..

  这里注意以下几点:

    1. 如果你安装的不是Visual Studio 2022, 这里-G需要换成其它参数,输入cmake -G可以查看都有哪些选项;
    2. 如果你的Windows系统中没有其它开发工具(例如MinGW),-G "Visual Studio 17 2022"可以不写;
    3. CMAKE_INSTALL_PREFIX指定安装库的位置,你可以随意指定;
    4. Windows下的Powershell输入多行时使用`连接,有的终端使用^连接;
    5. 最后的两点..表示上一级目录,千万不要丢了哦.

  

  完成后,依次执行以下命令:

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的更多相关文章

  1. [转] Windows下编译OpenSSL

    简述 OpenSSL是一个开源的第三方库,它实现了SSL(Secure SocketLayer)和TLS(Transport Layer Security)协议,被广泛企业应用所采用.对于一般的开发人 ...

  2. Windows下编译objective-C

    Windows下编译objective-C 2011-08-31 14:32 630人阅读 评论(0) 收藏 举报 windowscocoa工具objective clibraryxcode   目录 ...

  3. 在Windows下编译FFmpeg详细说明

    MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...

  4. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  5. 在Windows下编译OpenSSL(VS2005和VC6)

    需要说明的是请一定安装openssl-0.9.8a .  openssl-1.0.0我没有编译成功. 如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1.安装Activ ...

  6. windows下编译java源文件的编码错误

    import java.util.Arrays;public class ArrayAsAReference{ public static void main(String[] args) { int ...

  7. Windows下编译SDL

    Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...

  8. Windows下编译安装 FFmpeg

    在Linux/Mac下编译 ffmpeg是非常方便的.但要在 Windows下编译 ffmpeg还真要花点时间.以下就是在 Windowns下编译ffmpeg的步骤: 一.安装Cygwin 在wind ...

  9. windows下编译php7图形库php_ui.dll

    CSDN博客 具有图形化编程才有意思,这几天看到了php ui 图形扩展,只是现在只能下载php 7.1的 本次教程编译php7.2.6的 php ui 要是linux下编译起来比较简单 但是 win ...

  10. 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

随机推荐

  1. 第四届蓝桥杯(2013)C/C++大学A组省赛题解

    第一题:高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生 ...

  2. 写SAE评测,获 Airpods 2大奖【集结令】!

    Serverless 应用引擎 SAE 开启测评有奖!名额有限,先到先得! Serverless应用引擎SAE是一款极简易用.自适应弹性的容器化应用平台.现面向所有用户发出诚挚邀请,参与一分钟部署在线 ...

  3. Vue3 Diff算法之最长递增子序列,学不会来砍我!

    专栏分享:vue2源码专栏,vue3源码专栏,vue router源码专栏,玩具项目专栏,硬核推荐 欢迎各位ITer关注点赞收藏 Vue2 Diff算法可以参考[Vue2.x源码系列08]Diff算法 ...

  4. C#设计模式06——适配器的写法

    什么是适配器模式? 适配器模式是一种结构型设计模式,用于将现有接口转换为符合客户端期望的接口.适配器模式允许不兼容的类可以相互协作. 为什么需要适配器模式? 在实际开发中,经常会遇到需要复用一些已有的 ...

  5. linux 服务器运行jmeter 进行服务性能压测

    本文为博主原创,转载请注明出处: 起初需要了解项目服务的性能和瓶颈,就想要用 jmeter 进行压测,刚开始都是启动本地的jmeter 压测服务器上项目服务的性能,发现服务器的 cpu 和内存等一直升 ...

  6. 根据返回的多层Json来进行创建文件,达到根据阶层创建,然后压缩成压缩包进行下载

    临时接到一个需求说让根据按照下面的这个图片的结构来打包下载指定位置下的文件到指定位置! 实现思路: 1.把已经实现的树形结构的代码进行调用,拿到他的数据进行创建对应的文件夹 2.因为结构下方的文件没有 ...

  7. 超全面总结Vue面试知识点,助力金三银四

    前言 本文会对Vue中一些常见的重要知识点以及框架原理进行整理汇总,意在帮助作者以及读者自测Vue的熟练度以及方便查询与复习.金三银四的到来,想必vue会是很多面试官的重点考核内容,希望小伙伴们读完本 ...

  8. C# WPF侧边栏导航菜单(Dropdown Menu)

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  9. 用CI/CD工具Vela部署Elasticsearch + C# 如何使用

    Vela 除了可以帮我们编译.部署程序,利用它的docker部署功能,也能用来部署其他线上的docker镜像,例如部署RabbitMQ.PostgreSql.Elasticsearch等等,便于集中管 ...

  10. [转帖]ORACLE等待事件:enq: TX - row lock contention

    https://www.cnblogs.com/kerrycode/p/5887150.html enq: TX - row lock contention等待事件,这个是数据库里面一个比较常见的等待 ...