KMP iOS(おそらくNative?) と そのほか (JVMやAndroid) だけが 依存する ソースセットを自作すると、iOSMain が ソースセットとして認識されなくなる?
iOS android WasmJS jvm をターゲットに持つKMPプロジェクト
Wasmだけ 対応してないライブラリが多くて GradleのPlugin の文脈では 使えないってことがよくあるので
Wasm 以外のCommonを作って解消しようとした
sourceset {
val commonMainWithoutWasm by creating {
dependsOn(commonMain.get())
}
val desktopMain by getting {
dependsOn(commonMainWithoutWasm)
}
iosMain.get().dependsOn(commonMainWithoutWasm)
androidMain.get().dependsOn(commonMainWithoutWasm)
}
iOSMain だけ actual がないよ と怒られるようになる デフォルトのiOSMainのソースセットが認識されない?
他のプラットフォームは問題なし
You can have a shared source set for the following combinations of targets:
JVM or Android + JS + Native
JVM or Android + Native
JS + Native
JVM or Android + JS
Native
Kotlin doesn't currently support sharing a source set for these combinations:
Several JVM targets
JVM + Android targets
Several JS targets
対応してそうだけどな
iosMain.get().dependsOn(commonMainWithoutWasm)
iosMain.get().dependsOn(commonMain.get())
commonMainを改めて明示してもだめだった。
val iosMain by creating {
dependsOn(commonMainWithoutWasm)
dependsOn(commonMain.get())
}
listOf(iosArm64Main, iosX64Main, iosSimulatorArm64Main).forEach {
it.get().dependsOn(iosMain)
}
iOSMain を自作してみると、ビルドが通った。
こういう状態から
今 こう。 エラー前も後も これのはず。 なぜ iOSMainを自作すると治るのか わからない。。
ただ、図にするとわかるが、矢印的には 以下の方が理想な気がしてて、これにすればよくなったりする?
この場合、デフォルトで作られるCommonMain への 依存を全部定義し直す みたいなことが必要なので、 ベストプラクティスに感じないな。。。 わからん
ソースセットの依存グラフ を表示する ツールとかないかな