可以为不同的应用程序设置Gradle C ++依赖项吗?

时间:2020-02-17 21:36:08

标签: gradle kotlin dependencies static-linking dynamic-linking

我在同一项目中有一些具有相同依赖关系且正在构建的应用程序,其中一些需要静态,而其他需要共享。我根据https://github.com/gradle/gradle-native/issues/1017的答案为该错误建立了非常基本的显示,并且实际上得到了相同的错误。这是一个具有2个库的基本项目::1和:2,以及位于:app的cpp应用程序。这会吐出以下错误:

Could not determine the dependencies of task ':app:installDebug'.
> Could not resolve all task dependencies for configuration ':app:nativeRuntimeDebug'.
   > Could not resolve project :1.
     Required by:
         project :app
      > Module 'gradletest:1' has been rejected:
           Cannot select module with conflict on capability 'gradletest:1:unspecified' also provided by [gradletest:1:unspecified(debugSharedRuntimeElements), gradletest:1:unspecified(debugStaticRuntimeElements)]
   > Could not resolve project :1.
     Required by:
         project :app > project :2
      > Module 'gradletest:1' has been rejected:
           Cannot select module with conflict on capability 'gradletest:1:unspecified' also provided by [gradletest:1:unspecified(debugSharedRuntimeElements), gradletest:1:unspecified(debugStaticRuntimeElements)]

这是我要打破的样本。我敢肯定,我遵循了github中回答的所有内容,并且仔细阅读了gradle文档中所有我认为可能相关的内容。在我当前的非MVP情况下,我将拥有一个:app2,该链接将:1和:2链接为共享库,因此仅将:1和:2设置为静态将无法解决该问题。

1 / build.gradle.kts

plugins {
    `cpp-library`
    `cpp-unit-test`
}

library {
    linkage.set(listOf(Linkage.STATIC, Linkage.SHARED))
}

2 / build.gradle.kts

plugins {
    `cpp-library`
    `cpp-unit-test`
}

library {
    linkage.set(listOf(Linkage.STATIC, Linkage.SHARED))
    dependencies {
        implementation(project(":1"))
    }
}

app / build.gradle.kts

plugins {
    `cpp-application`
    `cpp-unit-test`
}

dependencies {
    implementation(project(":1")) {
        attributes { attribute(Attribute.of("org.gradle.native.linkage", Linkage::class.java), Linkage.STATIC) }
    }
    implementation(project(":2")) {
        attributes { attribute(Attribute.of("org.gradle.native.linkage", Linkage::class.java), Linkage.STATIC) }
    }
}

application {
}

这是在Gradle 5.4.1上完成的,不幸的是,获取更新非常困难,因此我无法测试是否是问题的旧版本。

0 个答案:

没有答案