Gradle: Попытка построить * .so ничего не дает - PullRequest
0 голосов
/ 14 мая 2018

Я новичок в Gradle, особенно в отношении сборки C / C ++. Я пытаюсь перевести SCons в Gradle. У меня есть каталог common / src, который содержит все файлы * .cc и * .h. Build.gradle состоит из следующего:

apply plugin: 'c'
apply plugin: 'cpp'
apply from: './gradle.properties'
model {
    components {
        common(NativeLibrarySpec)
     }

     binaries {
         withType(SharedLibraryBinarySpec) {
            if (targetPlatform.operatingSystem.windows) {
                cppCompiler.args '/MT', '/ZI'
            }

            if (targetPlatform.operatingSystem.linux) {
                cppCompiler.args '-c', '-g', '-fPIC'
                linker.args '-pthread'
            }
        }
    }
}

Я пытаюсь собрать .so, но ничего не получается, даже ошибка.

./gradlew commonSharedLibrary

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
See https://docs.gradle.org/4.7/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 0s

Чего мне не хватает? Где я могу найти документацию и примеры по C / C ++?

$ ../gradlew -version
------------------------------------------------------------
Gradle 4.7
------------------------------------------------------------
Build time:   2018-04-18 09:09:12 UTC
Revision:     b9a962bf70638332300e7f810689cb2febbd4a6c

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          1.8.0_151 (Oracle Corporation 25.151-b12)
OS:           Linux 3.10.0-514.el7.x86_64 amd64

1 Ответ

0 голосов
/ 14 мая 2018

Я не думаю, что вы на самом деле объявили источник того, что будет строить скрипт Gradle

В области действия components {} вы в основном говорите, что создаете библиотеку с именем Common ... она в основном генерирует задачи commonSharedLibrary (которые на самом деле ничего не делают)

Если вы назвали свой компонент tada(NativeLibrarySpec), он сгенерирует соответствующий tadaSharedLibrary

внутри components {} вам нужно объявить source{} того, что вы строите

main(NativeLibrarySpec) {
        sources {
            c {
                source {
                    srcDir "src/source"   <---- replace where your source is 
                    include "**/*.c"   <------ tells it to compile all c files in dir 
                }
               exportedHeaders {   <----- include files for the project
                       srcDirs  "include"
               }

            }
        }

Чтение мысли о документации для Сборка собственного программного обеспечения и просмотр примеров, которые, я думаю, могли бы помочь вам

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