Определение области FileCollectionDependency с атрибутами?

Мой вариант использования cpp-library проект, в котором я добавляю собственный путь включения и путь к библиотеке. Что я хотел бы сделать, это:

dependencies {
    implementation files( "path/to/include" )
    implementation fileTree( "path/to/lib" )
}

Или в идеале даже способ объединить оба из них в одно объявление зависимости.

Как написано, правда, это не работает. cpp-library плагин использует каждый implementation зависимость для обоих включений и пути к библиотеке, что приводит к тому, что компилятор пытается связываться с включаемыми файлами и наоборот.

Я заметил, однако, что DefaultCppBinary добавляет зависимости реализации немного другими способами:

includePathConfig.setCanBeConsumed(false);
includePathConfig.getAttributes().attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.class, Usage.C_PLUS_PLUS_API));
includePathConfig.getAttributes().attribute(DEBUGGABLE_ATTRIBUTE, identity.isDebuggable());
includePathConfig.getAttributes().attribute(OPTIMIZED_ATTRIBUTE, identity.isOptimized());
includePathConfig.getAttributes().attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, identity.getOperatingSystemFamily());
includePathConfig.extendsFrom(getImplementationDependencies());

Configuration nativeLink = configurations.create(names.withPrefix("nativeLink"));
nativeLink.setCanBeConsumed(false);
nativeLink.getAttributes().attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.class, Usage.NATIVE_LINK));
nativeLink.getAttributes().attribute(DEBUGGABLE_ATTRIBUTE, identity.isDebuggable());
nativeLink.getAttributes().attribute(OPTIMIZED_ATTRIBUTE, identity.isOptimized());
nativeLink.getAttributes().attribute(OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE, identity.getOperatingSystemFamily());
nativeLink.extendsFrom(getImplementationDependencies());

Предположив, что я мог бы провести различие между этими двумя, указав атрибуты на моей зависимости. Однако, похоже, что только ModuleDependency типы могут иметь атрибуты, и мои зависимости FileCollectionDependency типы.

Есть идеи? Почему атрибуты недоступны на FileCollectionDependency объекты? Могу ли я объединить эти две коллекции файлов в одну зависимость, которая каким-то образом разрешается для любого использования? Должен ли я указывать эти пути по-другому? Какой правильный подход здесь?

0 ответов

Другие вопросы по тегам