-
Notifications
You must be signed in to change notification settings - Fork 83
IDE project configuration for developing Godot GDExtensions using JetBrains Rider #95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
dsnopek
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are these configurations intended for building godot-cpp for working on godot-cpp itself? Or, are these intended for developers creating an extension that uses godot-cpp?
Can you provide some information on how these are meant to be used by developers and how we can maintain them over time?
Since I don't personally understand how these files work, I'm wary of merging this without more information
targets/godot.props
Outdated
| <NMakeReBuildCommandLine>echo Starting SCons & scons --directory="$(ProjectDir.TrimEnd('\'))" dev_build=yes</NMakeReBuildCommandLine> | ||
| <NMakeCleanCommandLine>echo Starting SCons & scons --clean --directory="$(ProjectDir.TrimEnd('\'))" dev_build=yes</NMakeCleanCommandLine> | ||
| <NMakeOutput Condition="'$(NMakeOutput)' == ''">bin/godot.macos.editor.dev</NMakeOutput> | ||
| <NMakePreprocessorDefinitions>TOOLS_ENABLED;DEBUG_ENABLED;DEV_ENABLED;ENGINE_UPDATE_CHECK_ENABLED;NO_EDITOR_SPLASH;ACCESSKIT_DYNAMIC;ACCESSKIT_ENABLED;MACOS_ENABLED;UNIX_ENABLED;COREAUDIO_ENABLED;COREMIDI_ENABLED;GLES3_ENABLED;METAL_ENABLED;RD_ENABLED;VULKAN_ENABLED;MINIZIP_ENABLED;BROTLI_ENABLED;THREADS_ENABLED;CLIPPER2_ENABLED;ZLIB_DEBUG;ZSTD_STATIC_LINKING_ONLY;VK_USE_PLATFORM_MACOS_MVK;VK_USE_PLATFORM_METAL_EXT;GLAD_ENABLED;EGL_ENABLED;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some of these defines appear to be from Godot rather than godot-cpp? Like ACCESSKIT_ENABLED, COREMIDI_ENABLED, etc
However, I'm not sure what this file are used for
|
I see, what you mean. Thank you. |
|
I wonder if this might be better as a community-maintained template for users of Rider? I don't know if anyone on the GDExtension team uses Rider, and would be able to test PRs for it or maintain it going foward. Whereas a small community of enthusiastic users of Rider could take that on |
|
It is up to you to decide if you'd like to incorporate the proposed changes. Kapture.2025-08-21.at.14.37.17.mp4A bit of me struggling with typing code. But the experience of GDExtension and the game in one place might be very good after all. (GodotEditor should be running all the time) |
|
Discussed at the GDExtension team meeting, and we're a little wary of adding so much code for Rider support. We'd prefer either:
|
de2cbce to
76b7e5f
Compare
|
@dsnopek I went with option (3). Just a side note. It forced me to do some changes in the Rider Godot integration, so for Rider |
|
Thanks! However, I don't think this matches what we had in mind for option nr 3. This appears to still be the same amount of files and content, just hidden in a dot directory. We aren't worried about the users seeing the files, we're worried about us being able to maintain this going forward, since we don't understand what all of this does or how it was generated in the first place. The idea behind option nr 3 was to reduce the files and content down to just the bare minimum to make it work. If it was small enough, perhaps we'd be able to understand and maintain it |
|
I have removed some auxilary files and macos_debug info, added a readme, describing each of the files in the I am afraid, there is nothing else to remove or simplify. I can merge targets and props into gdext.vcxproj, but it would not simplify understanding how msbuild files work. |
|
@van800 The README misses a section that explain how those file have been generated or can be generated on its own. Or could you alternatively elaborate how you did so? |
|
Reworked sln-vcxproj mapping again and it became a lot simpler, I am surprised myself. @paddy-exe In the video I wanted to point out how switching solution configuration affects the resulting scons call. And then I saw leftovers of previous refactoring and removed them. |
60d353a to
0296e30
Compare
|
Was testing this PR out with 2025.3 EAP4 and running into a couple issues,
2025-10-06.11-49-31.mp4 |
|
…Brains 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.
|
hello @van800 I'm a big fan of Rider and I am considering using it as my main IDE to start working on a game I'm making as a hobby. I noticed this was the way GDExtensions are planned to be supported in 2025.3 so I decided to get the files in your fork of this template to try to use it with my IDE but trying to run it seems to try to run the .sln file itself and causes this error: I'm on ArchLinux running Rider 2025.3 EAP 5 Edit: I managed to fix this by simply changing the exe path to my the location of godot on my system ( /usr/bin/godot ) I assumed this would be the right thing to do given how we run the project in this video
Edit 2:
PS: Could be a bit off topic but attaching the game folder does not seem to make Rider recognize it as a Godot project folder, your Readme is unclear about how we're supposed to enable gdscript support for the demo/game (I renamed everything from demo to game and opening the game folder directly in Rider works) |
|
Just fixed
|
|
@Chkoupinator to debug the game, you'd need not only exe path but also arguments and working directory.
|
|
@Chkoupinator
Regarding "Attach Folder" RIDER-131693 |
|
@van800 I had already tried that but it seems the version of python bundled with the lldb plugin of Rider (version 3.8) does not contain the Never type which was introduced to typing in 3.11 as per the logs: error: module importing failed: Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/chkoupinator/Projekts/Godot/GodotFormatters/godot_formatters/__init__.py", line 18, in <module>
import godot_formatters.godot_providers
File "/home/chkoupinator/Projekts/Godot/GodotFormatters/godot_formatters/godot_providers.py", line 19, in <module>
from typing import Any, Callable, Generic, Never, TypeVar, final, Optional
ImportError: cannot import name 'Never' from 'typing' (/home/chkoupinator/.local/share/JetBrains/Toolbox/apps/rider-2/plugins/cidr-debugger/bin/lldb/linux/x64/lib/python38.zip/typing.py)``` |





Automatically resolves C++ standard libraries.
I have tested on Mac and Windows.