Определение области 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
объекты? Могу ли я объединить эти две коллекции файлов в одну зависимость, которая каким-то образом разрешается для любого использования? Должен ли я указывать эти пути по-другому? Какой правильный подход здесь?