Могут ли зависимости Gradle C ++ быть установлены по-разному для разных приложений? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть несколько приложений в том же проекте, которые имеют те же зависимости, которые также создаются, некоторые из них нуждаются в них как stati c, а другие требуют их совместного использования. Я построил очень базовый c показ этой ошибки, основываясь на ответе https://github.com/gradle/gradle-native/issues/1017, и он получает практически ту же ошибку. Это базовый c проект с 2 библиотеками: 1 и: 2 и приложением cpp в: app. Это выдает следующую ошибку:

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 в качестве stati c, к сожалению, не решит проблему.

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, и, к сожалению, получить обновления невероятно сложно, поэтому я не смог проверить, является ли проблема старой версией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...