Reusing packages for multiple projects in workspace

Here’s my dilemma: I have a workspace with around 30 projects. There are 2 main projects which use the other projects as internal dependencies. Currently I’m using Carthage to gather external dependencies and multiple xcfilelists to declare global dependencies for the 2 top level projects. However, as I’m transitioning to Spm, this sort of global package for the project or workspace isn’t possible anymore. For example, packages in the root level project don’t cascade down in sub projects.

Therefore, the only thing I currently can do is to just manually add each package to each project and target. Based on my experiences, for the workspace itself, there can only be 1 correct instance of a package, meaning that every project that uses a package must have matching requirements; and thus, a change in one package would cascade to all projects that also use that package. Would anyone correct me if I’m wrong in this case? And also, is there a better way to do this? I thought of creating a package.swift file which would ultimately give me more control but that wouldn’t work with the Carthage dependencies that don’t have spm support.

We have a really similar situation. Two iOS apps, a lot of internal libraries with their own xcodeproj files, and a good number of inner source/open source dependencies built with Carthage. We can’t use SPM yet, but we’ve kinda landed on doing project generation of a single xcodeproj depending on what needs focusing on as the best option using XcodeGen