Hi @rakuyoMo! I’m Dosu and I’m helping the tuist team.
The directory structure you’re seeing is a result of how Tuist organizes dependencies and project files during generation. Tuist treats each project’s dependencies as explicit and modular, and the way you declare dependencies in each Project.swift determines where headers, resources, and binaries end up in the generated .xcodeproj files.
In your case, the split of AAXXSDK (headers/resources in SDK.xcodeproj, binaries in App1.xcodeproj) is likely due to how the dependencies are declared in the Project.swift files for App1 and SDK. If App1 declares a dependency directly on the SDK binaries (like .framework or .a files), Tuist will include those in App1.xcodeproj, even if the headers and resources are part of SDK.xcodeproj. This is consistent with Tuist’s approach: each project only includes what it needs for its targets, and dependencies are not automatically grouped together unless you explicitly model them that way in your manifests.
To ensure all SDK-related content (headers, resources, binaries) appears only in SDK.xcodeproj, you should:
- In SDK/Project.swift, declare all SDK-related files (headers, resources, binaries) as part of the SDK target.
- In Projects/App1/Project.swift, depend on the SDK target from SDK.xcodeproj using a
.projectdependency, not by referencing the binaries directly. - Avoid declaring the SDK binaries as direct dependencies in App1’s Project.swift. Instead, only depend on the SDK target.
This way, Tuist will keep all SDK content in SDK.xcodeproj, and App1.xcodeproj will reference SDK.xcodeproj as a dependency, not duplicate or split its contents.
For reference, see how Tuist handles dependencies and project structure in the documentation:
Tuist dependencies guide
If you adjust your Project.swift files accordingly and regenerate, you should see a more intuitive grouping of SDK-related files. If you need a concrete example or run into issues with the manifest syntax, let me know the relevant parts of your Project.swift files and I can help you adjust them.
To reply, just mention @dosu.
Docs are dead. Just use Dosu.