It looks like in Swift6, FRAMEWORK_SEARCH_PATHS
are required to point to all transitive dependencies
Long story short.
Framework A
depends on Framework B
dependes on Framework P(private)
.
Framework P
is pre-build framework, which is located at some external directory, and can be found by adding FRAMEWORK_SEARCH_PATHS
to the Framework B
settings
We want to hide information about the existance of framework P.
In swift 5.9 with (enable-experimental-feature AccessLevelOnImport
), and private import P
in Framework B
, Framework A
was buliding successfully.
Note: While everything was building just fine, it was clearly visible in generated module interface that framework B
is using framework P
When switched to Swif6, now build fails on line
// In Framework A
import B // error: missing required module P
This error can be fixed by the adding FRAMEWORK_SEARCH_PATHS
to the Framework A
settings. But this is kind'a overkill, and disrupts the whole idea of hiding the dependency.
This error also can be fixed by adding @_implementationOnly import P
. But then Swift compiler will give a warning that using '@_implementationOnly' without enabling library evolution for Framework P
may lead to instability during execution
Here is the most close-related issue to mine
Any help is appreciated. Thanks