I had a complicated package where I don't have control over the file layout working great under 5.1. But I wanted to now try to include some resource files for test cases. So I bumped the version line at the top of the Package.swift file to 5.3 and got an incredible slew of warnings/errors.
The major problem is this: I am forced to write something like this to get a particular target to work right:
.target(name: "opentimelineio", dependencies: ["opentime", "any", "optionallite"], path: "./src", exclude: ["opentimelineio/main.cpp"], sources: ["opentimelineio"], publicHeadersPath: ".", cxxSettings: [CXXSetting.headerSearchPath("deps/rapidjson/include")]),
where the directory "src" contains the directory which has my code (opentimelineio) but also basically lots of stuff NOT under my control, and that I can't monitor. Before, everything was fine, but now SPM wants me to exclude everything under src I don't care about.
What I really want to do here is say: (1) "ok, exclude everything under src" and then (2) now start including the following, i.e. for sources, publicHeaders, etc.
- Can I do that somehow?
- Could I tell the package manager "go back to the explicit opt-in model we had before"?
- I tried changing my exclude to be exclude: ["opentimelineio/main.cpp", "."] but then it says my target has no files at all, so I guess the exclude argument is trumping the sources argument.
I love the changes for resources, but making the package manager grab everything in sight seems a bad design for those of us who have to struggle to add SPM functionality to existing code bases.
P.S. You might ask why I don't just make path be "./src/opentimelineio". Believe me, I tried. That ends up breaking things because of the structure of the includes and because of the way we need the publicheaders to get communicated to client projects.