paulb777
(Paul Beusterien)
1
For a .headerSearchPath with multiple paths, Xcode is concatenating the paths into a single path and the builds are failing.
The directive works fine for building the package itself but fails when the package is imported into an Xcode 11 beta 2 app.
.headerSearchPath("$(SRCROOT)/Firebase $(SRCROOT)/GoogleUtilities/Logger/Private"), from https://github.com/firebase/firebase-ios-sdk/blob/5eb7513c7c5e2aa631c61c7ae309bce4dbe9ae98/Package.swift#L71.
From the Xcode build pane: -I/Users/paulbeusterien/Library/Developer/Xcode/DerivedData/StorageExample-akurljzskhottubesljyizrbemcs/SourcePackages/checkouts/firebase-ios-sdk/Firebase\ /Users/paulbeusterien/Library/Developer/Xcode/DerivedData/StorageExample-akurljzskhottubesljyizrbemcs/SourcePackages/checkouts/firebase-ios-sdk/GoogleUtilities/Logger/Private. Note the backslash space combination.
Any ideas or suggested workarounds?
2 Likes
I suspect .headerSearchPath is grammatically singular for a reason and the Package.swift is semantically incorrect. I believe it should actually be:
.headerSearchPath("$(SRCROOT)/Firebase"),
.headerSearchPath("$(SRCROOT)/GoogleUtilities/Logger/Private"),
See here for the documentation of headerSearchPath(_:_:).
1 Like
...and probably $(SRCROOT) doesn’t belong. The documentation says (emphasis added):
Provide a header search path relative to the target’s directory.
So I’m thinking the following is what it should be instead:
.headerSearchPath("../"), // From “Firebase/Core” to “Firebase”.
.headerSearchPath("../../GoogleUtilities/Logger/Private"), // From “Firebase/Core” to “GoogleUtilities/Logger/Private”.
paulb777
(Paul Beusterien)
4
Thanks! Singular headerSearchPath's generates the right HEADER_SEARCH_PATH and fixes the build issue I was running into.
paulb777
(Paul Beusterien)
5
BTW, $(SRCROOT) is required. Otherwise swift package generate-xcodeproj will generate the wrong HEADER_SEARCH_PATHs.
Yes, I just confirmed that the generated Xcode project ends up with the unaltered strings. But I think that means there is a bug, either in the implementation or in documentation.
CC: @Aciid
1 Like