Godot 命令行工具
一个用于设置环境以使用 Godot 源代码和 GDExtensions 的命令行接口。
尚未达到生产就绪阶段(alpha 阶段)。
仅在 Windows 上进行了测试和实现(稍后将支持 macOS 和 Linux)。
Godot 未认可也未支持此工具。
功能
此工具的灵感来自 flutter doctor,它帮助 Flutter 开发者配置他们的工作空间。此工具应提供类似的体验,以改进和简化 Godot GDExtension 的创建。
- 测试您的系统是否已正确配置以编译源代码。
- 安装 godot-cpp 源代码。
- 构建 godot-cpp 源代码。
- 从最小 C++ 模板创建 GDExtension。
路线图
- 添加对 Android 构建的检测
- 添加对 iOS 构建的检测
- 添加对 Web 构建的检测
- 添加对 Linux 的支持
- 添加对 macOS 的支持
- 添加测试
入门
- 下载最新的 版本。
- 将二进制文件解压到系统上的某个位置。
- 将二进制文件的路径添加到您的 PATH 环境变量中。
此工具将数据存储在
Windows: %APPDATA%\Roaming\gd-cli
用法
以管理员/root 身份在终端中运行命令。
使用此命令开始设置您的工作区
$ gd doctor
一切配置完成后(无问题),您可以安装一个版本的 godotengine/godot-cpp(此处为 v4.0-rc3)。这将花费一些时间下载仓库和构建源代码。
$ gd install --target 7e79aead99a53ee7cdf383add9a6a2aea4f15beb
注意:此提交已知来自官方博客文章,关于 v4.0-rc3 的发布。
现在您可以准备好生成一个 GDExtension 了
$ gd create --name awesome --output gd-extensions/
进入 gd-extensions/awesome/ 目录,使用以下命令构建您的扩展
$ scons target=template_debug
注意:未来可能会实现类似 GDExtension 目录中
gd build的功能。
您可以将 bin/ 目录与 awesome.gdextension 一起复制到您的 Godot 项目中,并使用您的 GDExtension。
有关每个命令的更多信息,请参见下文。
命令
帮助命令
$ gd help
显示此程序的用法以及您可以使用的所有命令。
doctor 命令
$ gd doctor
使用它来检测您系统上的所有必需工具。它将运行分析并向您报告工具是否已检测到并准备就绪。
config 命令
gd doctor 将期望工具位于您的 PATH 环境变量中才能执行。但是,如果您在特定路径使用某个工具,它可能默认不会被检测到。您可以使用以下命令告诉 gd 在哪里搜索。
$ gd config --program <program> --path <absolute-path>
定义一个 program 和一个 absolute-path 来告诉 gd 在哪里找到要执行的二进制文件。
$ gd config --program <program> --remove
删除 program 和路径值,以恢复到使用 PATH 环境变量的默认行为。
注意:您可以运行 gd help config 来列出允许的程序。它将根据您的操作系统列出。
install 命令
$ gd install [--target <master|commit>] [--mode <editor|template_debug|template_release>]
它将安装 godotengine/godot-cpp 仓库并拉取最新提交。它将使用 mode 作为 scons 目标来构建源代码。您可以选择在被询问时构建 /test 示例的源代码。
target 选项用于检出 master 分支(默认)的 HEAD 或检出 master 分支的提交哈希。
在使用提交哈希时,您必须输入来自 godotengine/godot 仓库的哈希。它会查找 godotengine/godot-cpp 中与上游同步的提交。您应该只使用在 文章 中提到的提交哈希,当某个版本发布时。
示例
- 您正在使用
Godot v4.0-rc3的构建。 - 此版本是从提交 7e79aead9 构建的。
- 您需要 godotengine/godot-cpp 与提交 7e79aead9 同步。
- 您可以在提交消息中查找与上游的同步,这里是从提交 c1ff169bf 查找的
gdextension:与上游提交 7e79aead99a53ee7cdf383add9a6a2aea4f15beb 同步
- 您检出了提交 c1ff169bf 以与您的 Godot 版本同步。
- 您终于可以编译 godotengine/godot-cpp 的源代码了。
这个例子是您不应该用 gd 做的事情。您只需要提供您正在使用的版本的提交哈希,以防止任何错误和版本不兼容。
下面是您可以使用上一个示例运行的命令
$ gd install --target 7e79aead99a53ee7cdf383add9a6a2aea4f15beb
create 命令
$ gd create --name <library-name> --output <path-output>
它将使用一个最小的 C++ 模板生成一个 GDExtension。它会在 <path-output> 路径下为您创建 <library-name> 目录。
这个模板基于 godotengine/godot-cpp/test,代码量较少。它的优点是为您重命名了 <library-name> 声明。
这是运行此命令后的输出示例
$ gd create --name awesome --output folder/
folder/
└── awesome/
├── src/
│ ├── register_types.cpp
│ ├── register_types.h
│ ├── awesome.cpp
│ └── awesome.h
├── .gitignore
├── CMakeLists.txt
├── SConstruct
└── awesome.gdextension
这将包括以下声明
- 一个继承自
Object的AwesomeGodot 类。 initialize_awesome_module和uninitialize_awesome_module.gdextension文件的声明。
它将在 bin/ 目录中输出二进制文件
folder/
└── awesome/
├── bin/
│ └── libgdawesome.[os].[target].[arch].[ext]
└── ...