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,正式发布,逸品香山。

相关推荐
ö Constancy1 小时前
c++ 笔记
开发语言·c++
fengbizhe1 小时前
笔试-笔记2
c++·笔记
徐霞客3201 小时前
Qt入门1——认识Qt的几个常用头文件和常用函数
开发语言·c++·笔记·qt
fpcc1 小时前
redis6.0之后的多线程版本的问题
c++·redis
螺旋天光极锐斩空闪壹式!2 小时前
自制游戏:监狱逃亡
c++·游戏
工业3D_大熊2 小时前
3D可视化引擎HOOPS Luminate场景图详解:形状的创建、销毁与管理
java·c++·3d·docker·c#·制造·数据可视化
暮色_年华3 小时前
Modern Effective C++ Item 11:优先考虑使用deleted函数而非使用未定义的私有声明
c++
流星白龙3 小时前
【C++习题】10.反转字符串中的单词 lll
开发语言·c++
Smile丶凉轩3 小时前
微服务即时通讯系统的实现(服务端)----(1)
c++·git·微服务·github
萝卜兽编程3 小时前
优先级队列
c++·算法