20240304-使用VS2022编译blender3.6.2源代码

20240304-使用VS2022编译blender3.6.2源代码

一、软件环境

  • Win10 x64 22h2 June
  • VS2022 v17.9.0
  • CMake v3.24.4
  • SVN v1.14.3
  • GIT v2.29.2
  • 标签:win10 22h2 vs2022 blender 63335
  • 分栏:C++

二、硬件环境

  • Win10 x64的PC台式机

三、获取源码

方法一

网盘下载源码,版本v3.6.2。

1、baidunetdisk

baidunet>5-软件>T-图形图像>blender>v3.6.2>src>blender1-v3.6.2.zip

C 复制代码
链接:https://pan.baidu.com/s/15pyULNKkYqEF_rkuXwcVpQ?pwd=3njy 
提取码:3njy 

2、其他位置

onedrive>software>blender>v3.6.2>src>blender1-v3.6.2.zip。

wpsdrive>C-常用软件>T-图形图像>T-图像处理>blender>v3.6.2>src>blender1-v3.6.2.zip

方法二

bash 复制代码
git clone https://github.com/blender/blender.git
cd blender
git checkout v3.6.2

这里的路径是【D:\github\blender\blender】。

四、获取win64_vc15库文件(revision:63335)

新建目录【lib/win64_vc15】,lib和blender源码平级,如图1;

1. 方法一

需要svn客户端,这里推荐【TortoiseSVN】,设置【Icon Overlays】里的【Status cache】选项为【None】,否则下载速度会很慢。如图tor1:

在win64_vc15目录下checkout依赖库地址【https://svn.blender.org/svnroot/bf-blender/trunk/lib/win64_vc15】;

设置Revision为【63335】,依赖python310和libfftw.lib。如图tor2:

注意这个revision版本非常重要,不同的blender可能依赖不同的revision,如果只执行update获取的是最新版本,但不一定适用于指定版本。

方法二

1、baidunetdisk

5-软件>lib>blender>win64_vc15>win64_vc15-svn63335-wf20240305.7z

C 复制代码
链接:https://pan.baidu.com/s/1fc5caORz_vMTvjFosIX9iA?pwd=knlm 
提取码:knlm 

2、其他位置

onedrive/lib/blender/win64_vc15/win64_vc15-svn63335-wf20240305.7z

五、执行make生成VS工程文件

方法一:

进入控制台:

bash 复制代码
cd D:\github\blender\blender
make.bat nobuild

运行成功后会显示生成路径,该路径下包含Blender.sln文件,如图1:

方法二:

打开cmake-gui.exe,设置Where is the source code为【D:/github/blender/blender】,设置Where to build为【D:/github/blender/build】

先点击configure,然后点击generate,如图3:

在build目录生成Blender.sln文件。

六、VS2022批生成

用VS2022打开Blender.sln文件,右键点击解决方案选择【批生成】,如图8:

勾选【INSTALL】【Release】,点击【生成】,如图9:

等待编译,大约25-30分钟。编译成功后如图4:

双击生成目录bin/Release下的blender.exe运行,如图10:

至此编译blender全过程结束。

七、遇到的错误

1、C2397从int转换到const unsigned __int64需要收缩转换

官方源码用VS2022编译会报这个错误(其他版本如果有相同错误也可以参考),如图5:

需将GHOST_Wintab.cc文件的第191行改为如下代码:

C 复制代码
// m_pkts{queueSize} 原来的代码会报错
m_pkts{(const unsigned __int64)queueSize}
或者
m_pkts{static_cast<const unsigned __int64>(queueSize)}

改动后如图6:

再次编译即可。

参考文献

  • 《从源代码编译Blender》,YakSue,CSDN。

  • 《类型收窄error C2397:conversion from ...》,林夕07,CSDN。

更新历史

2024-03-04 10:04:10,创建,云杉路11号。

2024-03-06 14:03:50,完成初稿,准备发布CSDN。

2024-03-07 22:53:28,正式发布,逸品香山。

相关推荐
Tairitsu_H5 小时前
[C++] 深入理解红黑树:封装set与map
开发语言·c++·set·map·红黑树·模拟实现
HugoStudio_SWAN6 小时前
洛谷 B4450 / B3867 / B3923 智慧购物、储蓄与做题——从程序到生活
c++·学习·程序人生·算法·生活
会周易的程序员8 小时前
5Draft(五帝)测试报告
服务器·c++·分布式·raft·共识算法·共识·算力服务器
UIU1148 小时前
scanf与cout的误区:探究其内部的机制
c++·学习·c#·scanf
闻缺陷则喜何志丹8 小时前
【栈 运算系统】P3719 [AHOI2017初中组] rexp|普及+
c++·算法··洛谷·运算系统
bnmoel8 小时前
C++ 基础入门篇(一):命名空间,输入&输出,缺省参数,函数重载
c++·函数重载·语法·命名空间·缺省参数
Zixhy9 小时前
多点巡检机器人项目技术总结
linux·c++·机器人·自动驾驶
Pointer Pursuit11 小时前
C++11特性(二)
前端·c++·算法
tudousisi22212 小时前
CSP 第3题训练 Day 5|CSP202509C HTTP 头信息|Blog A
c++
闻缺陷则喜何志丹12 小时前
【动态规划】P10726 [GESP202406 八级] 空间跳跃|普及+
c++·算法·动态规划·洛谷