From 7961a362af422d78b2ff95986e10d030952b99a2 Mon Sep 17 00:00:00 2001 From: Ivan Shakhov Date: Thu, 14 Aug 2025 23:00:12 +0200 Subject: [PATCH 1/7] IDE project configuration for developing Godot GDExtensions using JetBrains Rider on all major OS or Visual Studio on Windows. The main addition is a sln project file that configures build settings for all major platforms including Windows, Linux, macOS, iOS, Android, and WebAssembly with different architectures. It includes platform-specific property groups that map to SCons build commands and sets up proper include paths for the Godot C++ bindings. The solution file ties together both the C++ extension project and a demo project, while additional target files provide cross-platform toolchain resolution and macOS debugging entitlements. --- demo/demo.csproj | 13 ++ gdext.vcxproj | 196 ++++++++++++++++++++++++++++ godot-cpp-example.sln | 132 +++++++++++++++++++ targets/JetBrains.Rider.Cpp.targets | 19 +++ targets/entitlements.plist | 8 ++ targets/fix_mac_debug.sh | 4 + targets/nmake.substitution.props | 37 ++++++ 7 files changed, 409 insertions(+) create mode 100644 demo/demo.csproj create mode 100644 gdext.vcxproj create mode 100644 godot-cpp-example.sln create mode 100644 targets/JetBrains.Rider.Cpp.targets create mode 100644 targets/entitlements.plist create mode 100644 targets/fix_mac_debug.sh create mode 100644 targets/nmake.substitution.props diff --git a/demo/demo.csproj b/demo/demo.csproj new file mode 100644 index 00000000..b7b7ddb5 --- /dev/null +++ b/demo/demo.csproj @@ -0,0 +1,13 @@ + + + + + + Library + GODOT; + + + + + \ No newline at end of file diff --git a/gdext.vcxproj b/gdext.vcxproj new file mode 100644 index 00000000..2ab247f1 --- /dev/null +++ b/gdext.vcxproj @@ -0,0 +1,196 @@ + + + + {9A2FB295-38D9-4994-9497-26FF91C85465} + godot + MakeFileProj + NoUpgrade + + + + + Debug + windows + template_debug + dev_build=yes + x86_32 + + + Release + windows + template_release + x86_32 + + + Debug + windows + template_debug + dev_build=yes + x86_64 + + + Release + windows + template_release + x86_64 + + + + + Debug + linux + template_debug + dev_build=yes + x86_64 + + + Release + linux + template_release + x86_64 + + + Debug + linux + template_debug + dev_build=yes + arm64 + + + Release + linux + template_release + arm64 + + + Debug + linux + template_debug + dev_build=yes + rv64 + + + Release + linux + template_release + rv64 + + + + + Debug + macos + template_debug + dev_build=yes + + + + Release + macos + template_release + + + + + + Debug + ios + template_debug + dev_build=yes + arm64 + + + Release + ios + template_release + arm64 + + + + + Debug + android + template_debug + dev_build=yes + x86_64 + + + Release + android + template_release + x86_64 + + + Debug + android + template_debug + dev_build=yes + arm64 + + + Release + android + template_release + arm64 + + + + + Debug + web + template_debug + dev_build=yes + wasm32 + + + Release + web + template_release + wasm32 + + + + $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows))) + $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX))) + $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux))) + + + + + + + EXTENSION-NAME + + demo + + single + threads + + + + + Makefile + false + v143 + + godot-cpp/gen/include;godot-cpp/include;godot-cpp/gdextension;$(NMakeIncludeSearchPath); + + $(GODOT) + godot + + scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) $(BuildType) + scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) && scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) + scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) + + + + + + + + + + + + + \ No newline at end of file diff --git a/godot-cpp-example.sln b/godot-cpp-example.sln new file mode 100644 index 00000000..2c2cca3d --- /dev/null +++ b/godot-cpp-example.sln @@ -0,0 +1,132 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34221.43 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdext", "gdext.vcxproj", "{9A2FB295-38D9-4994-9497-26FF91C85465}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "game", "demo\demo.csproj", "{5E7DBDBD-898E-4278-9432-B8BBADEDA80F}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug-x86_32|windows = Debug-x86_32|windows + Release-x86_32|windows = Release-x86_32|windows + Debug-x86_64|windows = Debug-x86_64|windows + Release-x86_64|windows = Release-x86_64|windows + + Debug-x86_64|linux = Debug-x86_64|linux + Release-x86_64|linux = Release-x86_64|linux + Debug-arm64|linux = Debug-arm64|linux + Release-arm64|linux = Release-arm64|linux + Debug-rv64|linux = Debug-rv64|linux + Release-rv64|linux = Release-rv64|linux + + Debug|macos = Debug|macos + Release|macos = Release|macos + + Debug-arm64|ios = Debug-arm64|ios + Release-arm64|ios = Release-arm64|ios + + Debug-x86_64|android = Debug-x86_64|android + Release-x86_64|android = Release-x86_64|android + Debug-arm64|android = Debug-arm64|android + Release-arm64|android = Release-arm64|android + + Debug-wasm32|web = Debug-wasm32|web + Release-wasm32|web = Release-wasm32|web + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_32|windows.ActiveCfg = Debug-x86_32|windows + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_32|windows.Build.0 = Debug-x86_32|windows + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_32|windows.ActiveCfg = Release-x86_32|windows + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_32|windows.Build.0 = Release-x86_32|windows + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|windows.ActiveCfg = Debug-x86_64|windows + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|windows.Build.0 = Debug-x86_64|windows + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|windows.ActiveCfg = Release-x86_64|windows + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|windows.Build.0 = Release-x86_64|windows + + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|linux.ActiveCfg = Debug-x86_64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|linux.Build.0 = Debug-x86_64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|linux.ActiveCfg = Release-x86_64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|linux.Build.0 = Release-x86_64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|linux.ActiveCfg = Debug-arm64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|linux.Build.0 = Debug-arm64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|linux.ActiveCfg = Release-arm64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|linux.Build.0 = Release-arm64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-rv64|linux.ActiveCfg = Debug-rv64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-rv64|linux.Build.0 = Debug-rv64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-rv64|linux.ActiveCfg = Release-rv64|linux + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-rv64|linux.Build.0 = Release-rv64|linux + + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|macos.ActiveCfg = Debug|macos + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|macos.Build.0 = Debug|macos + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|macos.ActiveCfg = Release|macos + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|macos.Build.0 = Release|macos + + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|ios.ActiveCfg = Debug-arm64|ios + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|ios.Build.0 = Debug-arm64|ios + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|ios.ActiveCfg = Release-arm64|ios + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|ios.Build.0 = Release-arm64|ios + + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|android.ActiveCfg = Debug-x86_64|android + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|android.Build.0 = Debug-x86_64|android + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|android.ActiveCfg = Release-x86_64|android + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|android.Build.0 = Release-x86_64|android + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|android.ActiveCfg = Debug-arm64|android + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|android.Build.0 = Debug-arm64|android + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|android.ActiveCfg = Release-arm64|android + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|android.Build.0 = Release-arm64|android + + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-wasm32|web.ActiveCfg = Debug-wasm32|web + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-wasm32|web.Build.0 = Debug-wasm32|web + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-wasm32|web.ActiveCfg = Release-wasm32|web + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-wasm32|web.Build.0 = Release-wasm32|web + + # demo.csproj part + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_32|windows.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_32|windows.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_32|windows.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_32|windows.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|windows.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|windows.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|windows.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|windows.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|linux.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|linux.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|linux.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|linux.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|linux.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|linux.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|linux.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|linux.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-rv64|linux.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-rv64|linux.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-rv64|linux.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-rv64|linux.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug|macos.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug|macos.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release|macos.ActiveCfg = Release|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release|macos.Build.0 = Release|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|ios.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|ios.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|ios.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|ios.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|android.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|android.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|android.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|android.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|android.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|android.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|android.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|android.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-wasm32|web.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-wasm32|web.Build.0 = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-wasm32|web.ActiveCfg = Debug|Any CPU + {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-wasm32|web.Build.0 = Debug|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {75408944-4e38-4094-a91b-4730439ab8ee} + EndGlobalSection +EndGlobal diff --git a/targets/JetBrains.Rider.Cpp.targets b/targets/JetBrains.Rider.Cpp.targets new file mode 100644 index 00000000..a6aa0d78 --- /dev/null +++ b/targets/JetBrains.Rider.Cpp.targets @@ -0,0 +1,19 @@ + + + + + + + + + + + + + $(ClangIncludeDirs)$(NMakeIncludeSearchPath) + + + + + + diff --git a/targets/entitlements.plist b/targets/entitlements.plist new file mode 100644 index 00000000..d103d42e --- /dev/null +++ b/targets/entitlements.plist @@ -0,0 +1,8 @@ + + + + + com.apple.security.get-task-allow + + + \ No newline at end of file diff --git a/targets/fix_mac_debug.sh b/targets/fix_mac_debug.sh new file mode 100644 index 00000000..3c53d8eb --- /dev/null +++ b/targets/fix_mac_debug.sh @@ -0,0 +1,4 @@ +# to check current entitlements +#codesign -d --entitlements :- /Applications/Godot_v4.4.1-stable_macos.app/Contents/MacOS/Godot +# to overwrite +codesign --entitlements entitlements.plist -f -s - /Applications/Godot_v4.4.1-stable_macos.app/Contents/MacOS/Godot \ No newline at end of file diff --git a/targets/nmake.substitution.props b/targets/nmake.substitution.props new file mode 100644 index 00000000..3526ff9f --- /dev/null +++ b/targets/nmake.substitution.props @@ -0,0 +1,37 @@ + + + + + + Unknown + $(NMakeOutput) + + + + + + + + + + + + + + $(AdditionalOptions) + $(NMakeForcedIncludes) + $(NMakeForcedUsingAssemblies) + $(NMakePreprocessorDefinitions) + + + + MachineARM64 + + + MachineX64 + + + MachineX86 + + + From ae44fe3ce9745746f30c7c619bf4c54f04144cd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=A0achov?= Date: Tue, 7 Oct 2025 09:49:00 +0200 Subject: [PATCH 2/7] remove the demo.csproj --- demo/demo.csproj | 13 ------------- godot-cpp | 2 +- godot-cpp-example.sln | 44 +------------------------------------------ 3 files changed, 2 insertions(+), 57 deletions(-) delete mode 100644 demo/demo.csproj diff --git a/demo/demo.csproj b/demo/demo.csproj deleted file mode 100644 index b7b7ddb5..00000000 --- a/demo/demo.csproj +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - Library - GODOT; - - - - - \ No newline at end of file diff --git a/godot-cpp b/godot-cpp index 6388e26d..d502d8e8 160000 --- a/godot-cpp +++ b/godot-cpp @@ -1 +1 @@ -Subproject commit 6388e26dd8a42071f65f764a3ef3d9523dda3d6e +Subproject commit d502d8e8aae35248bad69b9f40b98150ab694774 diff --git a/godot-cpp-example.sln b/godot-cpp-example.sln index 2c2cca3d..dfec7c72 100644 --- a/godot-cpp-example.sln +++ b/godot-cpp-example.sln @@ -1,11 +1,9 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 +Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.7.34221.43 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdext", "gdext.vcxproj", "{9A2FB295-38D9-4994-9497-26FF91C85465}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "game", "demo\demo.csproj", "{5E7DBDBD-898E-4278-9432-B8BBADEDA80F}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug-x86_32|windows = Debug-x86_32|windows @@ -82,46 +80,6 @@ Global {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-wasm32|web.Build.0 = Release-wasm32|web # demo.csproj part - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_32|windows.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_32|windows.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_32|windows.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_32|windows.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|windows.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|windows.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|windows.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|windows.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|linux.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|linux.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|linux.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|linux.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|linux.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|linux.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|linux.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|linux.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-rv64|linux.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-rv64|linux.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-rv64|linux.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-rv64|linux.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug|macos.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug|macos.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release|macos.ActiveCfg = Release|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release|macos.Build.0 = Release|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|ios.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|ios.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|ios.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|ios.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|android.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-x86_64|android.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|android.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-x86_64|android.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|android.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-arm64|android.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|android.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-arm64|android.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-wasm32|web.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Debug-wasm32|web.Build.0 = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-wasm32|web.ActiveCfg = Debug|Any CPU - {5E7DBDBD-898E-4278-9432-B8BBADEDA80F}.Release-wasm32|web.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From d13c7a385df7575cd08c62dd4831ac62dc2d3700 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=A0achov?= Date: Tue, 7 Oct 2025 09:52:26 +0200 Subject: [PATCH 3/7] remove files related to macos entitlements and indexLayout.xml --- targets/entitlements.plist | 8 -------- targets/fix_mac_debug.sh | 4 ---- 2 files changed, 12 deletions(-) delete mode 100644 targets/entitlements.plist delete mode 100644 targets/fix_mac_debug.sh diff --git a/targets/entitlements.plist b/targets/entitlements.plist deleted file mode 100644 index d103d42e..00000000 --- a/targets/entitlements.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.get-task-allow - - - \ No newline at end of file diff --git a/targets/fix_mac_debug.sh b/targets/fix_mac_debug.sh deleted file mode 100644 index 3c53d8eb..00000000 --- a/targets/fix_mac_debug.sh +++ /dev/null @@ -1,4 +0,0 @@ -# to check current entitlements -#codesign -d --entitlements :- /Applications/Godot_v4.4.1-stable_macos.app/Contents/MacOS/Godot -# to overwrite -codesign --entitlements entitlements.plist -f -s - /Applications/Godot_v4.4.1-stable_macos.app/Contents/MacOS/Godot \ No newline at end of file From 4b48664fe8968514c770585b77ef0c4802ba8511 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=A0achov?= Date: Tue, 7 Oct 2025 09:52:51 +0200 Subject: [PATCH 4/7] move targets to .sln, make it invisible in vscode --- {targets => .sln/targets}/JetBrains.Rider.Cpp.targets | 0 {targets => .sln/targets}/nmake.substitution.props | 0 gdext.vcxproj | 10 +++++----- 3 files changed, 5 insertions(+), 5 deletions(-) rename {targets => .sln/targets}/JetBrains.Rider.Cpp.targets (100%) rename {targets => .sln/targets}/nmake.substitution.props (100%) diff --git a/targets/JetBrains.Rider.Cpp.targets b/.sln/targets/JetBrains.Rider.Cpp.targets similarity index 100% rename from targets/JetBrains.Rider.Cpp.targets rename to .sln/targets/JetBrains.Rider.Cpp.targets diff --git a/targets/nmake.substitution.props b/.sln/targets/nmake.substitution.props similarity index 100% rename from targets/nmake.substitution.props rename to .sln/targets/nmake.substitution.props diff --git a/gdext.vcxproj b/gdext.vcxproj index 2ab247f1..8b9c6d94 100644 --- a/gdext.vcxproj +++ b/gdext.vcxproj @@ -155,7 +155,7 @@ $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux))) - + @@ -166,7 +166,7 @@ single threads - + Makefile @@ -189,8 +189,8 @@ - + - + - \ No newline at end of file + From 372bab6a6d52400e4a0a1b6c7fe3556cd92d3a2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=A0achov?= Date: Tue, 7 Oct 2025 09:54:29 +0200 Subject: [PATCH 5/7] fixes --- .sln/readme.md | 30 +++ .sln/targets/JetBrains.Rider.Cpp.targets | 25 +- .sln/targets/nmake.substitution.props | 59 ++--- gdext.vcxproj | 294 +++++++++-------------- godot-cpp-example.sln | 115 +++++---- 5 files changed, 232 insertions(+), 291 deletions(-) create mode 100644 .sln/readme.md diff --git a/.sln/readme.md b/.sln/readme.md new file mode 100644 index 00000000..caed02e4 --- /dev/null +++ b/.sln/readme.md @@ -0,0 +1,30 @@ +# JetBrains Rider C++ support files (.sln folder) + +Rider uses these files to resolve C++, provide code insight, and create/run build configs. They also supply MSBuild/NMake metadata so projects index and build correctly. + +- godot-cpp-example.sln + - Solution that groups the C++ projects and lists all Configuration|Platform pairs shown in the Solution Configuration selector. + +- gdext.vcxproj + - GDExtension C++ project. Rider reads compiler options/defines/includes and also calls scons to build the extension library (.dll/.so/.dylib). + +- targets/JetBrains.Rider.Cpp.targets (for non-Windows) + - MSBuild target that resolves C++ standard library headers. + +- targets/nmake.substitution.props (for non-Windows) + - Substitutes Build/Rebuild/Clean targets. + - Reference: [godot/misc/msvs/nmake.substitution.props](https://github.com/godotengine/godot/blob/master/misc/msvs/nmake.substitution.props) + + +Sln to vcxproj relation: +- The .sln file lists all Configuration|Platform pairs in SolutionConfigurationPlatforms (e.g., Debug|linux-x86_64). +- The same pairs are mapped to the gdext project in ProjectConfigurationPlatforms, so the project gets the exact Configuration and Platform selected in the IDE. +- In gdext.vcxproj, $(Configuration) toggles Debug/Release props, while $(Platform) is matched by Condition blocks to set GodotPlatform and Arch. +- Those values feed the NMake commands, which call scons with platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate). +- Result: choosing a Solution configuration in Rider/VS selects the matching vcxproj config and builds the right target for your OS/arch. +- sln and vcxproj are meant to be manually edited in Rider. + +Notes: +- Full `godot-cpp-template` folder can be linked by context menu of the solution root (Add | Existing folder) +- Auxiliary project linking `demo` game contents can be added optionally in the `demo` folder. Rider plugins for Godot would provide language support, run configurations and other features for such projects. +- Theoretically there is an option to use non-msvc toolchain on Windows, but there are known problems with it in Rider debugger [RIDER-106816], so for now for this project on Windows MSBuild with MSVC toolchain is a requirement to work in Rider. diff --git a/.sln/targets/JetBrains.Rider.Cpp.targets b/.sln/targets/JetBrains.Rider.Cpp.targets index a6aa0d78..1fa25153 100644 --- a/.sln/targets/JetBrains.Rider.Cpp.targets +++ b/.sln/targets/JetBrains.Rider.Cpp.targets @@ -1,19 +1,18 @@ + + + - - - - - - - - + + + + - - $(ClangIncludeDirs)$(NMakeIncludeSearchPath) - + + $(ClangIncludeDirs);$(NMakeIncludeSearchPath) + - - + + diff --git a/.sln/targets/nmake.substitution.props b/.sln/targets/nmake.substitution.props index 3526ff9f..e286e8b9 100644 --- a/.sln/targets/nmake.substitution.props +++ b/.sln/targets/nmake.substitution.props @@ -1,37 +1,28 @@ - - - - Unknown - $(NMakeOutput) - - - - - - - - - - - - - - $(AdditionalOptions) - $(NMakeForcedIncludes) - $(NMakeForcedUsingAssemblies) - $(NMakePreprocessorDefinitions) - - - - MachineARM64 - - - MachineX64 - - - MachineX86 - - + + + + + + + + + + + + + + MachineARM64 + + + MachineX64 + + + MachineX86 + + diff --git a/gdext.vcxproj b/gdext.vcxproj index 8b9c6d94..6ea057e8 100644 --- a/gdext.vcxproj +++ b/gdext.vcxproj @@ -1,196 +1,124 @@ - - {9A2FB295-38D9-4994-9497-26FF91C85465} - godot - MakeFileProj - NoUpgrade - + + $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)')) + - - - Debug - windows - template_debug - dev_build=yes - x86_32 - - - Release - windows - template_release - x86_32 - - - Debug - windows - template_debug - dev_build=yes - x86_64 - - - Release - windows - template_release - x86_64 - + + {9A2FB295-38D9-4994-9497-26FF91C85465} + godot + MakeFileProj + NoUpgrade + - - - Debug - linux - template_debug - dev_build=yes - x86_64 - - - Release - linux - template_release - x86_64 - - - Debug - linux - template_debug - dev_build=yes - arm64 - - - Release - linux - template_release - arm64 - - - Debug - linux - template_debug - dev_build=yes - rv64 - - - Release - linux - template_release - rv64 - + + template_debug + dev_build=yes + - - - Debug - macos - template_debug - dev_build=yes - - - - Release - macos - template_release - - + + template_release + - - - Debug - ios - template_debug - dev_build=yes - arm64 - - - Release - ios - template_release - arm64 - + + + windows + x86_32 + + + windows + x86_64 + - - - Debug - android - template_debug - dev_build=yes - x86_64 - - - Release - android - template_release - x86_64 - - - Debug - android - template_debug - dev_build=yes - arm64 - - - Release - android - template_release - arm64 - + + + linux + x86_64 + + + linux + arm64 + + + linux + rv64 + - - - Debug - web - template_debug - dev_build=yes - wasm32 - - - Release - web - template_release - wasm32 - + + + macos + + - - $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows))) - $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX))) - $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux))) - - - + + + ios + arm64 + - - - EXTENSION-NAME - - demo - - single - threads - - + + + android + x86_64 + + + android + arm64 + - - Makefile - false - v143 - - godot-cpp/gen/include;godot-cpp/include;godot-cpp/gdextension;$(NMakeIncludeSearchPath); - - $(GODOT) - godot - - scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) $(BuildType) - scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) && scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) - scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) - - - - - - - - + + + web + wasm32 + - - - + + $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Windows))) + $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::OSX))) + $([System.Runtime.InteropServices.RuntimeInformation]::IsOSPlatform($([System.Runtime.InteropServices.OSPlatform]::Linux))) + + + + + + + single + threads + + + + + Makefile + false + + + v143 + Clang_Mac + Clang_Linux + Clang_Linux + Clang_Linux + + Unknown + + $(RepoRoot) + dylib + $(NMakeWorkingDirectory)/demo + --editor + $(RepoRoot)/godot-cpp/gen/include;$(RepoRoot)/godot-cpp/include;$(RepoRoot)/godot-cpp/gdextension;$(NMakeIncludeSearchPath); + + scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) $(BuildType) + scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) && scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) + scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) + + + + + + + + + + + + diff --git a/godot-cpp-example.sln b/godot-cpp-example.sln index dfec7c72..983c424c 100644 --- a/godot-cpp-example.sln +++ b/godot-cpp-example.sln @@ -6,80 +6,73 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gdext", "gdext.vcxproj", "{ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug-x86_32|windows = Debug-x86_32|windows - Release-x86_32|windows = Release-x86_32|windows - Debug-x86_64|windows = Debug-x86_64|windows - Release-x86_64|windows = Release-x86_64|windows + Debug|windows-x86_32 = Debug|windows-x86_32 + Release|windows-x86_32 = Release|windows-x86_32 + Debug|windows-x86_64 = Debug|windows-x86_64 + Release|windows-x86_64 = Release|windows-x86_64 - Debug-x86_64|linux = Debug-x86_64|linux - Release-x86_64|linux = Release-x86_64|linux - Debug-arm64|linux = Debug-arm64|linux - Release-arm64|linux = Release-arm64|linux - Debug-rv64|linux = Debug-rv64|linux - Release-rv64|linux = Release-rv64|linux + Debug|linux-x86_64 = Debug|linux-x86_64 + Release|linux-x86_64 = Release|linux-x86_64 + Debug|linux-arm64 = Debug|linux-arm64 + Release|linux-arm64 = Release|linux-arm64 + Debug|linux-rv64 = Debug|linux-rv64 + Release|linux-rv64 = Release|linux-rv64 Debug|macos = Debug|macos Release|macos = Release|macos - Debug-arm64|ios = Debug-arm64|ios - Release-arm64|ios = Release-arm64|ios + Debug|ios-arm64 = Debug|ios-arm64 + Release|ios-arm64 = Release|ios-arm64 - Debug-x86_64|android = Debug-x86_64|android - Release-x86_64|android = Release-x86_64|android - Debug-arm64|android = Debug-arm64|android - Release-arm64|android = Release-arm64|android + Debug|android-x86_64 = Debug|android-x86_64 + Release|android-x86_64 = Release|android-x86_64 + Debug|android-arm64 = Debug|android-arm64 + Release|android-arm64 = Release|android-arm64 - Debug-wasm32|web = Debug-wasm32|web - Release-wasm32|web = Release-wasm32|web + Debug|web-wasm32 = Debug|web-wasm32 + Release|web-wasm32 = Release|web-wasm32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_32|windows.ActiveCfg = Debug-x86_32|windows - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_32|windows.Build.0 = Debug-x86_32|windows - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_32|windows.ActiveCfg = Release-x86_32|windows - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_32|windows.Build.0 = Release-x86_32|windows - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|windows.ActiveCfg = Debug-x86_64|windows - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|windows.Build.0 = Debug-x86_64|windows - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|windows.ActiveCfg = Release-x86_64|windows - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|windows.Build.0 = Release-x86_64|windows - - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|linux.ActiveCfg = Debug-x86_64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|linux.Build.0 = Debug-x86_64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|linux.ActiveCfg = Release-x86_64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|linux.Build.0 = Release-x86_64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|linux.ActiveCfg = Debug-arm64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|linux.Build.0 = Debug-arm64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|linux.ActiveCfg = Release-arm64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|linux.Build.0 = Release-arm64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-rv64|linux.ActiveCfg = Debug-rv64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-rv64|linux.Build.0 = Debug-rv64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-rv64|linux.ActiveCfg = Release-rv64|linux - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-rv64|linux.Build.0 = Release-rv64|linux - + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_32.ActiveCfg = Debug|windows-x86_32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_32.Build.0 = Debug|windows-x86_32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_32.ActiveCfg = Release|windows-x86_32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_32.Build.0 = Release|windows-x86_32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_64.ActiveCfg = Debug|windows-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_64.Build.0 = Debug|windows-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_64.ActiveCfg = Release|windows-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_64.Build.0 = Release|windows-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|linux-x86_64.ActiveCfg = Debug|linux-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|linux-x86_64.Build.0 = Debug|linux-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|linux-x86_64.ActiveCfg = Release|linux-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|linux-x86_64.Build.0 = Release|linux-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|linux-arm64.ActiveCfg = Debug|linux-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|linux-arm64.Build.0 = Debug|linux-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|linux-arm64.ActiveCfg = Release|linux-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|linux-arm64.Build.0 = Release|linux-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|linux-rv64.ActiveCfg = Debug|linux-rv64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|linux-rv64.Build.0 = Debug|linux-rv64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|linux-rv64.ActiveCfg = Release|linux-rv64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|linux-rv64.Build.0 = Release|linux-rv64 {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|macos.ActiveCfg = Debug|macos {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|macos.Build.0 = Debug|macos {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|macos.ActiveCfg = Release|macos {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|macos.Build.0 = Release|macos - - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|ios.ActiveCfg = Debug-arm64|ios - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|ios.Build.0 = Debug-arm64|ios - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|ios.ActiveCfg = Release-arm64|ios - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|ios.Build.0 = Release-arm64|ios - - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|android.ActiveCfg = Debug-x86_64|android - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-x86_64|android.Build.0 = Debug-x86_64|android - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|android.ActiveCfg = Release-x86_64|android - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-x86_64|android.Build.0 = Release-x86_64|android - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|android.ActiveCfg = Debug-arm64|android - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-arm64|android.Build.0 = Debug-arm64|android - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|android.ActiveCfg = Release-arm64|android - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-arm64|android.Build.0 = Release-arm64|android - - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-wasm32|web.ActiveCfg = Debug-wasm32|web - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug-wasm32|web.Build.0 = Debug-wasm32|web - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-wasm32|web.ActiveCfg = Release-wasm32|web - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release-wasm32|web.Build.0 = Release-wasm32|web - - # demo.csproj part + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|ios-arm64.ActiveCfg = Debug|ios-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|ios-arm64.Build.0 = Debug|ios-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|ios-arm64.ActiveCfg = Release|ios-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|ios-arm64.Build.0 = Release|ios-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|android-x86_64.ActiveCfg = Debug|android-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|android-x86_64.Build.0 = Debug|android-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|android-x86_64.ActiveCfg = Release|android-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|android-x86_64.Build.0 = Release|android-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|android-arm64.ActiveCfg = Debug|android-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|android-arm64.Build.0 = Debug|android-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|android-arm64.ActiveCfg = Release|android-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|android-arm64.Build.0 = Release|android-arm64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|web-wasm32.ActiveCfg = Debug|web-wasm32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|web-wasm32.Build.0 = Debug|web-wasm32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|web-wasm32.ActiveCfg = Release|web-wasm32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|web-wasm32.Build.0 = Release|web-wasm32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE From 08b9aca7e65a2206f9367efa9ca7c08b064944d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=A0achov?= Date: Mon, 27 Oct 2025 13:48:05 +0100 Subject: [PATCH 6/7] fix scons not found on Windows --- gdext.vcxproj | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/gdext.vcxproj b/gdext.vcxproj index 6ea057e8..940af0d9 100644 --- a/gdext.vcxproj +++ b/gdext.vcxproj @@ -20,6 +20,17 @@ template_release + + + Debug + x64 + + + Release + x64 + + + windows @@ -98,18 +109,29 @@ Clang_Linux Clang_Linux - Unknown + v143 + $(PlatformToolset) $(RepoRoot) dylib $(NMakeWorkingDirectory)/demo --editor $(RepoRoot)/godot-cpp/gen/include;$(RepoRoot)/godot-cpp/include;$(RepoRoot)/godot-cpp/gdextension;$(NMakeIncludeSearchPath); + + + scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) $(BuildType) scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) && scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) + + + cmd /V /C set "PATH=$(PATH)" ^& scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) $(BuildType) + cmd /V /C set "PATH=$(PATH)" ^& scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) ^& scons platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) + cmd /V /C set "PATH=$(PATH)" ^& scons --clean platform=$(GodotPlatform) arch=$(Arch) target=$(GodotTemplate) + + From d5d9cc948be4fd9ef6099097d37efa43aeb5e5ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=A0achov?= Date: Mon, 27 Oct 2025 15:07:01 +0100 Subject: [PATCH 7/7] fix Windows MSVC --- gdext.vcxproj | 17 +++-------------- godot-cpp-example.sln | 16 ++++++++-------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/gdext.vcxproj b/gdext.vcxproj index 940af0d9..89afd6f8 100644 --- a/gdext.vcxproj +++ b/gdext.vcxproj @@ -20,23 +20,12 @@ template_release - - - Debug - x64 - - - Release - x64 - - - - - + + windows x86_32 - + windows x86_64 diff --git a/godot-cpp-example.sln b/godot-cpp-example.sln index 983c424c..228e2f44 100644 --- a/godot-cpp-example.sln +++ b/godot-cpp-example.sln @@ -33,14 +33,14 @@ Global Release|web-wasm32 = Release|web-wasm32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_32.ActiveCfg = Debug|windows-x86_32 - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_32.Build.0 = Debug|windows-x86_32 - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_32.ActiveCfg = Release|windows-x86_32 - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_32.Build.0 = Release|windows-x86_32 - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_64.ActiveCfg = Debug|windows-x86_64 - {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_64.Build.0 = Debug|windows-x86_64 - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_64.ActiveCfg = Release|windows-x86_64 - {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_64.Build.0 = Release|windows-x86_64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_32.ActiveCfg = Debug|Win32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_32.Build.0 = Debug|Win32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_32.ActiveCfg = Release|Win32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_32.Build.0 = Release|Win32 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_64.ActiveCfg = Debug|x64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|windows-x86_64.Build.0 = Debug|x64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_64.ActiveCfg = Release|x64 + {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|windows-x86_64.Build.0 = Release|x64 {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|linux-x86_64.ActiveCfg = Debug|linux-x86_64 {9A2FB295-38D9-4994-9497-26FF91C85465}.Debug|linux-x86_64.Build.0 = Debug|linux-x86_64 {9A2FB295-38D9-4994-9497-26FF91C85465}.Release|linux-x86_64.ActiveCfg = Release|linux-x86_64