godotengine / godotengine/godot-cpp

Document source level integration into GDNative C++ plugins

Open
#641 2 comments 1 reaction 0 assignees View on GitHub
documentation enhancement
Dominant language
C++
Stars
2.7k
Forks
809
Avg merge
1d 3h
Merged PRs (30d)
8

Description

Currently, the documentation written in README.md mentions that this repository can be added as a submodule and then built into a static library.

It also mentions that this library can then be linked into the GDNative C++ plugins.

However, I have found that sometimes a source-level integration (instead of just a static library that needs to be chucked into the C++ plugin build process) needs to take place between the plugin and godot-cpp. This is required in cases where the plugin is interacting with a custom build of Godot and needs to regenerate the C++ bindings using the custom `api.json` workflow.

I was able to get such a setup working by adding the following to the plugin's SCons script:

```python
...
opts.Add(BoolVariable("godot_cpp", "Build godot-cpp by forwarding arguments to it.", "no"))
...

# Updates the environment with the option variables.
opts.Update(env)

Export("env")

if env["godot_cpp"]:
if ARGUMENTS.get("use_custom_api_file", False) and ARGUMENTS.get("custom_api_file", "") != "":
ARGUMENTS["custom_api_file"] = "../" + ARGUMENTS["custom_api_file"]

SConscript("godot-cpp/SConstruct")

SConscript("godot-git-plugin/SCsub")
```

This allowed the calling SCons script to straight away start godot-cpp builds using a custom `api.json` and then moving on to building the plugin, without going through the process of changing the directory into godot-cpp, running SCons and then changing directory back up one level and then building the plugin.

It would be nice if such a workflow is mentioned in the README because for the longest time godot/godot-git-plugin has been generating custom bindings for testing and that has been done using native shell scripts until it gets updated to use the code I shared above.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.