个人向 godot 源码阅读 - 1 - 获取 / 编译源码
1 - 获取 / 编译源码
获取
最常见的方法便是从 GitHub 上拉取, 不过鉴于国内访问 GitHub 速度之慢, 可以采取个折中的方案: 先从 Gitee 上拉取:
git clone https://gitee.com/mirrors/godot
然后更改 remote 地址:
git remote set-url origin https://github.com/godotengine/godot.git
再更新到最新的一个 commit:
git pull
那么目前, 源码就算拉完了, 不过我们是在的最新 commit 上, 难免出现各种 bug 以及重构中的代码, 所以我们查询最新的 stable 并切换:
git tag
...
4.1.4-stable
4.2-stable
4.2.1-stable
4.2.2-stable
(END)
git checkout 4.2.2-stable
等待一小会, 你就拥有了一个 stable 版本的源码了.
编译
godot 使用了一个 python 工具 scons 作为编译工具, 那么自然你需要先安装 scons:
pip install scons
相比编译一个和官方版本几乎一致的 godot, 我们不妨再来一点有趣的东西, 比如在版本信息上加入自己的字符串, 以及生成一些用于我们打算用来浏览代码的 vs 的配置文件.
这个过程很简单, 我们只需在根目录创建一个 custom.py
, 然后写入下列内容:
module_mono_enabled = "yes" # 启用 .NET 模块
dev_build = "yes" # 使用开发版本配置, 以便我们可以进行调试
对于版本信息上的后缀则需要一个环境变量, 这里及后续我们都假设你正在使用 powershell
(7.4.0):
$env:BUILD_NAME = "sap_build"
然后最终开始我们的编译(并生成 vs 的项目文件):
scons p=windows target=editor arch=x86_64 vsproj=yes
然后静静等待你的 cpu 咆哮 1h.jpg, 当你看到 [Time elapsed: 01:12:17.053]
的字样后就代表编译成功了. 你可以在 bin
目录下得到你的编译产品.
此外由于我们开启了 .NET 模块, 所以我们还需要再编译托管层代码:
首先调用编译好的 godot 生成所有的胶水类:
./bin/godot.windows.editor.dev.x86_64.mono.exe --headless --generate-mono-glue modules/mono/glue
然后调用脚本唤起 msbuild 编译 C# 项目:
python ./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin
编译成功后你将会在 bin
目录下再看到 GodotSharp
目录, 里面装载着需要的 .NET
程序集文件以及
nuget
包.
额外
打开 godot.sln
后, .h
文件与 .cpp
文件默认是分为两个筛选器来的, 不过我个人相比来说不太喜欢这点, 所以我选择打开 godot.vcxproj.filters
, 然后批量替换 Header Files\
和 Source Files\
为空让它放一起.
此外在我这如果在 vs 中触发生成, 会又重新编译整个项目, 临时的解决方案大概是到 vs 的项目属性中的 NMake
栏中将 "生成命令行" 以及 "全部重新生成命令行" 都更改为 set BUILD_NAME=sap_build && scons p=windows target=editor arch=x86_64
, 也就是我们之前使用的指令.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?