Skip to content

aguoxing/godot-cpp-example

Repository files navigation

Godot4 With C++

VSCODE C++环境配置;

Godot使用C++编写脚本;

版本:Godot_v4.0.1-stable_win64、Python3.10.2、Scones4.5.2、MinGW8.1.0、MSVC latest

示例源码

安装C++编译器

三大常见编译器GCC,Clang,MSVC,这里以GCCMSVC为例

!!!bug

目前(20230517)gcc编译的dll有问题,godot无法加载,godot-cpp有些问题没合并,所有还是用mscv吧

以下的配置需要有一点点修改(主要是编译器路径等),但流程是一样的

!!!

GCC

安装MinGW下载地址

找到MinGW-W64 GCC-8.1.0,选择x86_64-win32-seh

各版本区别参考 1

下载完解压,配置环境变量

系统变量下新建 变量名:MINGW_HOME,变量值:解压后的MinGw路径,比如D:\devEnv\x86_64-8.1.0-release-win32-seh-rt_v6-rev0\mingw64

Path编辑,新增 %MINGW_HOME%\bin

打开cmd, gcc --version 显示版本号则配置完成

MSVC

方法1:安装Visual Studio

方法2:通过Visual Studio 2022 生成工具,下载完是一个vs_BuildTools.exe安装包,直接安装即可,安装完成后,在弹出的界面中工作负荷Tab选中使用C++的桌面开发,右边会有安装详细信息,按需求选择。安装位置Tab中可以修改安装位置,配置完后点击安装,等待安装完成。

vscode中,如果之前配置好C++插件的话,Ctr+Shift+P快捷键打开C++配置界面,在编译器路径选项哪里会自动扫描到刚刚安装的MSVC路径,选择一个即可

VSCode配置

安装C/C++扩展,带Microsoft蓝标的那个

新建个cpp项目,gdextension

在gdextension/src目录下新建个hello.cpp文件

#include <iostream>
using namespace std;

int main() {
	cout<< "hello cpp "<<endl;
	return 0;
}

配置编译器

Ctrl+Shift+P快捷键调出命令面板,选择C/C++:编辑配置(UI)C/C++:Edit Configurations(UI)

打开后的界面可以设置编译器路径IntelliSense 模式C++ 标准等,同时在.vscode文件夹下生成了c_cpp_properties.json文件

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:/devEnv/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/mingw64/bin/gcc.exe",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

配置构建任务

同样是Ctrl+Shift+P快捷键,输入tasks,选择任务: 配置默认测试任务 Tasks:Configure Default Build Task,选择C/C++: g++.exe build active file,如果没有这个选项需要选中(激活)一个cpp文件,项目路径下g++ .\src\hello.cpp

.vscode文件夹下生成了tasks.json文件

{
  // See https://go.microsoft.com/fwlink/?LinkId=733558
  // for the documentation about the tasks.json format
  "version": "2.0.0",
  "tasks": [
    {
      "type": "shell",
      "label": "g++.exe build active file",
      "command": "D:/devEnv/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/mingw64/bin/g++.exe",
      "args": [
        "-fdiagnostics-color=always",
        "-g",
        "${file}",
        "-o",
        "${fileDirname}\\${fileBasenameNoExtension}.exe"
      ],
      "options": {
        "cwd": "D:/devEnv/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/mingw64/bin"
      },
      "problemMatcher": ["$gcc"],
      "group": {
        "kind": "build",
        "isDefault": true
      },
      "detail": "编译器: D:/devEnv/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/mingw64/bin/g++.exe"
    }
  ]
}

配置调试

点击菜单栏,运行R/启动调试F11.vscode文件夹下生成launch.json文件,打开后右下角有添加配置的按钮,或者直接copy下面的

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "(gdb) Launch",
      "preLaunchTask": "g++.exe build active file", //调试前执行的任务,就是之前配置的tasks.json中的label字段
      "type": "cppdbg", //配置类型,只能为cppdbg
      "request": "launch", //请求配置类型,可以为launch(启动)或attach(附加)
      "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", //调试程序的路径名称
      "args": [], //调试传递参数
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": true, //true显示外置的控制台窗口,false显示内置终端
      "MIMode": "gdb",
      "miDebuggerPath": "D:/devEnv/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/mingw64/bin/gdb.exe",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

至此,vscode1.78.2中c++环境配置完成

Godot

1、下载godot,Windows下选Godot_v4.0.X-stable_win64.exe.zip版本

2、clone godot-cppgit clone https://github.com/godotengine/godot-cpp.git

3、新建godot项目godot-cpp-example,把之前建的gdextension项目放到godot项目根目录下,同时把clone的godot-cpp官方模板放到gdextension文件夹下,并在.vscodec_cpp_properties.jsonincludePath中加上刚刚的godot-cpp路径

{
  "configurations": [
    {
      "name": "Win32",
      "includePath": [
        "${workspaceFolder}/**",
        "${workspaceFolder}/src/**",
        "${workspaceFolder}/godot-cpp/**" // 把克隆的官方模板加到项目根路径下
      ],
      "defines": ["_DEBUG", "UNICODE", "_UNICODE"],
      "compilerPath": "D:/devEnv/x86_64-8.1.0-release-win32-seh-rt_v6-rev0/mingw64/bin/gcc.exe",
      "cStandard": "c17",
      "cppStandard": "c++17",
      "intelliSenseMode": "gcc-x64"
    }
  ],
  "version": 4
}

此时整个目录结构如下,src路径下的文件可以参考godot-cpp下的test文件夹,里面有完整的使用示例

godot-cpp-example
--gdextension
	--godot-cpp // clone的官方模板
	--src // 新建的写cpp的路径
		--hello.cpp
		--hello.h
		--register_types.cpp
		--register_types.h
	--SConstruct 

4、编译写好的cpp项目,再此之前,需要有python3的环境,并且安装了scons,在cpp-example根目录下输入scons,等待编译完成

最后提示scons: done building targets.表示编译成功

godot-cpp-example项目根目录下,将生成的dll文件放到的bin文件夹,配置hello.gdextension

[configuration]

entry_symbol = "hello_library_init" // 对应cpp项目中的register_types.cpp文件中的 GDE_EXPORT hello_library_init 名称

[libraries]

windows.debug.x86_64 = "res://bin/libgdexample.windows.template_debug.x86_64.dll" // 生成的动态库路径

5、打开之前新建好的godot项目godot-cpp-example,此时新建节点时将可以看到之前创建的hello类,hello继承的什么类就是什么节点,可以像其他节点一样使用

参考

Godot引擎如何用C++编写脚本?

VSCode配置C/C++环境

VSCode配置C++环境(MSVC)

Godot文档

Footnotes

  1. MinGW gcc下载链接及sjlj、dwarf、seh异同以及gcc安装

About

godot4 widht cpp example

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published