#!/usr/bin/env python # SConstruct — Spellforge C++ GDExtension 构建脚本 # 用法(在本目录 gdextension/ 下): # scons # 默认 template_debug,本机平台/架构 # scons target=template_release # scons -j8 # 并行编译 # 依赖:godot-cpp 子模块(gdextension/godot-cpp)、SCons、C++ 工具链(Windows 用 MSVC,SCons 自动探测 VS)。 # API:通过 custom_api_file 指向本工程从 4.7.1 编辑器 dump 的 extension_api.json,保证绑定与引擎精确匹配。 import os # 将本工程 4.7.1 的 API 注入 godot-cpp(除非命令行显式覆盖 custom_api_file)。 ARGUMENTS.setdefault("custom_api_file", os.path.abspath("api/extension_api.json")) # 复用 godot-cpp 的构建环境(平台/架构/编译器探测、绑定生成、静态库)。 env = SConscript("godot-cpp/SConstruct") env.Append(CPPPATH=["src/"]) sources = Glob("src/*.cpp") libname = "spellforge_native" bindir = "bin" if env["platform"] == "macos": target = "{}/lib{}.{}.{}.framework/lib{}.{}.{}".format( bindir, libname, env["platform"], env["target"], libname, env["platform"], env["target"], ) else: target = "{}/lib{}{}{}".format(bindir, libname, env["suffix"], env["SHLIBSUFFIX"]) library = env.SharedLibrary(target, source=sources) Default(library)