Do `targets` need to be accessed lazily (i.e. `con...
# multiplatform
e
Do
targets
need to be accessed lazily (i.e.
configureEach
) or is it ok to call
targets.withType<T>()
I ask because I'm running into the following issue:
Copy code
kotlin {
  setUpMyTargets()

  targets.configureEach {
    if(this is KotlinNativeTarget) {
      if(konanTarget.family.isAppleFamily) {
        binaries.framework {
          export(project(":my-project"))
        }
      }
    }
  }
This leads to:
Copy code
org.gradle.api.internal.AbstractMutationGuard$IllegalMutationException: Project#afterEvaluate(Action) on project ':engine' cannot be executed in the current context.
	at org.gradle.api.internal.AbstractMutationGuard.createIllegalStateException(AbstractMutationGuard.java:39)
	at org.gradle.api.internal.AbstractMutationGuard.assertMutationAllowed(AbstractMutationGuard.java:34)
	at org.gradle.api.internal.project.DefaultProject.assertMutatingMethodAllowed(DefaultProject.java:1444)
	at org.gradle.api.internal.project.DefaultProject.afterEvaluate(DefaultProject.java:1048)
	at org.jetbrains.kotlin.gradle.plugin.KotlinNativeTargetConfigurator.createFrameworkArtifact$configureConfiguration(KotlinNativeTargetConfigurator.kt:83)
Using
withType
doesn't result in an error
s
Entities like Targets, Compilations and SourceSets from Kotlin do not need to be configured lazily. Matter of fact: I would advise to configure them eagerly