Skip to content

Incorrect static library path in iOS .pbxproj for GDExtension #108012

Open
@VitaliLiashchuk

Description

@VitaliLiashchuk

Godot version

4.4.1.stable

godot-cpp version

4.4.1.stable

System information

macOS 15.5 (Apple Silicon)

Issue description

When exporting an iOS project that includes a GDExtension using a static .a library, Godot generates an incorrect file path in the resulting Xcode project (project.pbxproj).

❌ The generated path looks like this:
589384010000000000000002 = {
isa = PBXFileReference;
lastKnownFileType = archive.ar;
name = "libExampleGodotPlugin.a";
path = "Example/addons/ExamplePlugin/bin/ios/libExampleGodotPlugin.a";
sourceTree = "";
};

Image

✅ It should instead be:

589384010000000000000002 = {
isa = PBXFileReference;
lastKnownFileType = archive.ar;
name = "libExampleGodotPlugin.a";
path = "Example.ipa/addons/ExamplePlugin/bin/ios/libExampleGodotPlugin.a";
sourceTree = "";
};

Steps to reproduce

Steps to reproduce
1. Create a minimal GDExtension that builds a static .a file (e.g., libExampleGodotPlugin.a)
2. Place the .a in addons/ExamplePlugin/bin/ios/
3. Create a .gdextension file in addons/ExamplePlugin/
4. Export the project for iOS from the Godot editor
5. Open the resulting Xcode project
6. In project.pbxproj, inspect the file reference for libExampleGodotPlugin.a
7. Notice the path uses Example/... instead of Example.ipa/...
8. Try to build — Xcode will fail due to missing library

Minimal reproduction project

✅ I’ve attached a minimal GDExtension plugin project demonstrating this issue.

Minimal reproduction project

godot_example.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    For team assessment

    Status

    For team assessment

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions