跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++

Godot 通过 GDExtension 配置 C++ 开发环境

介绍在 Godot 引擎中使用 GDExtension 配置 C++ 开发环境的完整流程。主要步骤包括下载官方绑定库、编写 SConstruct 构建脚本、创建 gdextension 配置文件以及配置 VS Code 进行智能感知与调试。通过合理配置,可实现 C++ 扩展代码的直接断点调试及热重载,显著提升开发效率。

星河入梦发布于 2026/3/30更新于 2026/7/2865 浏览

Godot 通过 GDExtension 配置 C++ 开发环境

本文介绍在 Godot 引擎中使用 GDExtension 配置 C++ 开发环境的流程。主流手段为 GDExtension,需配合官方维护的绑定库。

环境准备

安装 Visual Studio 和 Godot(建议使用最新 4.5 版本)。

获取绑定库

从 GitHub 下载官方维护的绑定库:godot-cpp。 参考官方文档说明:编译插件。

目录结构

创建主文件夹,包含以下结构:

  • demo-cpp/:Godot 项目
  • demo-cpp/bin:存放编译后的 C++ 扩展 DLL
  • godot-cpp/:下载的 C++ 绑定库
  • src/:编写的 C++ 扩展代码

配置 SCons

在根目录创建 SConstruct 文件。确保安装 SCons(可通过 Miniconda 管理 Python 环境)。 参考配置如下:

#!/usr/bin/env python
import os
import sys
env = SConscript("./godot-cpp/SConstruct")
env.Append(CPPPATH=["src/"])
sources = Glob("src/*.cpp")
if env["platform"] == "macos":
    library = env.SharedLibrary(
        "demo-cpp/bin/libgdexample.{}.{}.framework/libgdexample.{}".format(
            env["platform"], env["target"], env["platform"], env["target"]
        ),
        source=sources,
    )
elif env["platform"] == "ios":
    if env["ios_simulator"]:
        library = env.StaticLibrary(
            "demo-cpp/bin/libgdexample.{}.{}.simulator.a".format(env["platform"], env["target"]),
            source=sources,
        )
    else:
        library = env.StaticLibrary(
            "demo-cpp/bin/libgdexample.{}.{}.a".format(env["platform"], env["target"]),
            source=sources,
        )
else:
    library = env.SharedLibrary(
        "demo-cpp/bin/libgdexample{}{}".format(env["suffix"], env["SHLIBSUFFIX"]),
        source=sources,
    )
Default(library)

注意路径配置,特别是项目名。

创建扩展配置文件

在 Godot 项目中手动创建 bin 目录,并添加 gdexample.gdextension 文件用于链接项目和扩展。 示例配置:

[configuration]
entry_symbol = "example_library_init"
compatibility_minimum = "4.5"
reloadable = true
[libraries]
windows.debug.x86_64 = "res://bin/libgdexample.windows.template_debug.dev.x86_64.dll"
windows.release.x86_64 = "res://bin/libgdexample.windows.template_release.x86_64.dll"
linux.debug.x86_64 = "res://bin/libgdexample.linux.template_debug.x86_64.so"
linux.release.x86_64 = "res://bin/libgdexample.linux.template_release.x86_64.so"
macos.debug = "res://bin/libgdexample.macos.template_debug.framework"
macos.release = "res://bin/libgdexample.macos.template_release.framework"
ios.debug = "res://bin/libgdexample.ios.template_debug.xcframework"
ios.release = "res://bin/libgdexample.ios.template_release.xcframework"
android.debug.x86_64 = "res://bin/libgdexample.android.template_debug.x86_64.so"
android.release.x86_64 = "res://bin/libgdexample.android.template_release.x86_64.so"
[dependencies]
ios.debug = { "res://bin/libgodot-cpp.ios.template_debug.xcframework": "" }
ios.release = { "res://bin/libgodot-cpp.ios.template_release.xcframework": "" }

填写编译到 bin 目录下的库文件地址。

IDE 配置 (VS Code)

在 VS Code 配置目录下创建 c_cpp_properties.json、tasks.json、launch.json 三个文件。

  1. c_cpp_properties.json:改善 C++ 项目的智能感知。
  2. tasks.json:配置通过 IDE 启动 SCons 编译动作。
  3. launch.json:配置编辑器的调试运行。

c_cpp_properties.json 示例:

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": ["${workspaceFolder}/**"],
      "defines": ["_DEBUG", "UNICODE", "_UNICODE", "TOOLS_ENABLED", "DEBUG_ENABLED", "TESTS_ENABLED"],
      "windowsSdkVersion": "10.0.26100.0",
      "compilerPath": "cl.exe",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "intelliSenseMode": "windows-msvc-x64"
    }
  ],
  "version": 4
}

tasks.json 示例:

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "build-extension [dev build]",
      "group": "build",
      "type": "shell",
      "command": "cmd",
      "args": ["/c", "conda activate godot_scons && scons compiledb=yes dev_build=yes"],
      "problemMatcher": "$msCompile"
    }
  ]
}

参数说明:

  • compiledb=yes:生成 compile_commands.json,辅助智能感知。
  • dev_build=yes:编译调试用的 dev 版本 DLL。

launch.json 示例:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Run Project in Editor",
      "type": "cppvsdbg",
      "request": "launch",
      "program": "<godot_exe_path>",
      "args": ["--editor", "--path", "${workspaceFolder}/demo-cpp", "--verbose", "--debug", "--stdout"],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}"
    },
    {
      "name": "Run Project in Game",
      "type": "cppvsdbg",
      "request": "launch",
      "program": "<godot_exe_path>",
      "args": ["--path", "${workspaceFolder}/demo-cpp", "--verbose", "--debug", "--stdout"],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}"
    }
  ]
}

preLaunchTask 可配置启动前的前置任务(如先编译)。

配置完成后,在 VS Code 中通过 Shift+Ctrl+P 呼出命令行,选择运行生成任务即可编译。 建议安装 godot-tools 插件以增强体验,并在编辑器设置中启用外部 IDE。该插件可显示场景节点树结构,支持快速打开 GDScript 代码。

总结

Godot 的 C++ 扩展开发体验良好,主要优势包括:

  1. 可直接在扩展的 C++ 代码中下断点进行调试。
  2. 修改代码后直接编译,无需重启编辑器即可查看变化,接近脚本语言体验。

目录

  1. Godot 通过 GDExtension 配置 C++ 开发环境
  2. 环境准备
  3. 获取绑定库
  4. 目录结构
  5. 配置 SCons
  6. 创建扩展配置文件
  7. IDE 配置 (VS Code)
  8. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 30 个 Python 常用操作技巧与示例
  • 基于无人机 RGB+红外双模态的小目标行人检测系统与数据集
  • Ubuntu 系统安装 Docker 及配置国内镜像源
  • OpenClaw 汉化版部署常见问题排查手册
  • C/C++ 中 extern 关键字详解:函数与变量修饰
  • 无GPU也行:Qwen3.5 本地部署记录
  • Ground Slow, Move Fast: Dual-System Foundation Model for VLN
  • 给 OpenCode 接上 Kimi K2.5:三种方式与一些选择
  • 深入浏览器指纹:Canvas、WebGL、Audio 如何暴露身份
  • AI 驱动 PCB 设计:自然语言生成电路板方案
  • C++物理引擎碰撞检测实战指南
  • ModelSim 仿真软件安装与使用指南
  • 3 步将石头扫地机器人接入 HomeAssistant 智能家居
  • 未知测量噪声下的自适应EKF-SLAM实现
  • OpenClaw Gateway 常见问题与配置详解
  • Word 文档的 5 种视图详解:页面、阅读、Web 版式、大纲及草稿
  • VS Code 集成 Overleaf 实现本地 AI 辅助 LaTeX 写作
  • 微信正式接入开源 AI 智能体 OpenClaw,ClawBot 插件配置与限制说明
  • MS-S1 MAX 与 AI MAX 395 在 Ubuntu 24 使用 Vulkan 版 llama.cpp 运行 gpt-oss 120b
  • Z-Image-Turbo Python API 调用示例详解

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online