godotengine / godot-cpp-template

Quickstart template for GDExtension development with Godot
https://docs.godotengine.org/en/stable/tutorials/scripting/gdextension/what_is_gdextension.html
The Unlicense
145 stars 55 forks source link

Rename macOS and windows binaries to fit the OSs better in SConstruct #55

Open Ivorforce opened 1 month ago

Ivorforce commented 1 month ago

The primary change is in SConstruct:

"{}{}{}{}".format(env.subst("$SHLIBPREFIX"), libname, env["suffix"], env.subst("$SHLIBSUFFIX"))

This names binaries as they should be named depending on OS and godot tags. This happens to rename only windows and macOS:

Another change regards the macos.framework folder, which is now named EXTENSION-NAME-macos.framework. It is common practice to name the .framework folder after the actual library name. I'm keeping the -macos because, unlike other libraries, we have different binaries for different platforms.

Finally, using Install copies the original file name, allowing us to avoid passing the name again manually and stay consistent.

Originally part of #49

Ivorforce commented 1 month ago

It is notable that a rather annoying bug currently exists that makes the .framework approach rather unattractive: https://github.com/godotengine/godot/issues/96403 (edit: though notably in 4.3 only, not 4.4 dev)

I've narrowed it down to this exact cause, but it's difficult for me to pinpoint where exactly in the code the error occurs, so far.

fire commented 3 weeks ago

As you sure? I remember the requirement on windows to link by abs path and linkflags

Ivorforce commented 3 weeks ago

As you sure? I remember the requirement on windows to link by abs path and linkflags

You mean regarding my .framework problem? It may have to do with the fact that I don't sign the frameworks yet. Or that i've been using a template_release build for the editor, which apparently expects template_release? I'll have to do some more testing before coming to final conclusions.

Either way for this PR i'm using the recommended .framework approach.