Closed6

KMP iOS(おそらくNative?) と そのほか (JVMやAndroid) だけが 依存する ソースセットを自作すると、iOSMain が ソースセットとして認識されなくなる?

kk__777kk__777

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)
}
kk__777kk__777

iOSMain だけ actual がないよ と怒られるようになる デフォルトのiOSMainのソースセットが認識されない?

他のプラットフォームは問題なし

kk__777kk__777
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 を自作してみると、ビルドが通った。

kk__777kk__777

こういう状態から

今 こう。 エラー前も後も これのはず。 なぜ iOSMainを自作すると治るのか わからない。。

ただ、図にするとわかるが、矢印的には 以下の方が理想な気がしてて、これにすればよくなったりする?
この場合、デフォルトで作られるCommonMain への 依存を全部定義し直す みたいなことが必要なので、 ベストプラクティスに感じないな。。。 わからん

kk__777kk__777

ソースセットの依存グラフ を表示する ツールとかないかな

このスクラップは2ヶ月前にクローズされました