1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xmake-io-xmake-gradle

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 8.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 19:50 727ef67

xmake-gradle

Введение

xmake-gradle — это плагин Gradle, который бесшовно интегрирует xmake.

Если вы хотите узнать больше, пожалуйста, обратитесь к:

Подготовка

Сначала нам нужно установить соответствующий инструмент командной строки xmake. Инструкции по установке см. в разделе «xmake» (https://github.com/xmake-io/xmake).

Применение плагина

  1. Интеграция через плагин DSL:
plugins {
  id 'org.tboox.gradle-xmake-plugin' version '1.1.8'
}
  1. Устаревший способ интеграции:
buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath 'org.tboox:gradle-xmake-plugin:1.1.8'
  }
  repositories {
    mavenCentral()
  }
}

apply plugin: "org.tboox.gradle-xmake-plugin"

Конфигурация

Пример самой простой конфигурации:

если мы добавим файл xmake.lua в projectdir/jni/xmake.lua, то нам нужно только включить соответствующий путь JNI-проекта в build.gradle, чтобы активировать xmake:

android {
    externalNativeBuild {
        xmake {
            path "jni/xmake.lua"
        }
    }
}

Структура JNI-проекта:

projectdir
  - src
    - main
      - java
  - jni
    - xmake.lua
    - *.cpp

Файл xmake.lua:

add_rules("mode.debug", "mode.release")
target("nativelib")
    set_kind("shared")
    add_files("nativelib.cc")

Дополнительные настройки Gradle:

android {
    defaultConfig {
        externalNativeBuild {
            xmake {
                // Добавляем глобальные флаги компиляции C
                cFlags "-DTEST"

                // Добавляем глобальные флаги компиляции C++
                cppFlags "-DTEST", "-DTEST2"

                // Устанавливаем режим сборки, соответствующий настройке `xmake f -m debug` в xmake.lua
                buildMode "debug"

                // Указываем список ABI для компиляции, поддерживаемые значения: armeabi, armeabi-v7a, arm64-v8a, x86, x86_64
                // Если не указано, мы также можем получить список из defaultConfig.ndk.abiFilters
                abiFilters "armeabi-v7a", "arm64-v8a"

                // Определяем цели для компиляции
                // targets "xxx", "yyy"
            }
        }
    }

    externalNativeBuild {
        xmake {
            // Устанавливаем корневой путь файла xmake.lua в проекте JNI, это обязательно, иначе xmake не будет активирован
            path "jni/xmake.lua"

            // Включаем подробный вывод, отображающий полные параметры командной строки компиляции, другие значения: verbose, normal
            logLevel "verbose"

            // Указываем библиотеку STL для C++, по умолчанию используется c++_static, другие значения: c++_static/c++_shared, gnustl_static/gnustl_shared, stlport_static/stlport_shared
            stl "c++_shared"

            // Устанавливаем путь к исполняемому файлу xmake (обычно не требуется)
            // program /usr/local/bin/xmake

            // Отключаем стандартную библиотеку C++, по умолчанию она включена
            // stdcxx false

            //
``` ## Компиляция JNI

### Компиляция JNI и генерация APK

После применения плагина `gradle-xmake-plugin` задача `xmakeBuild` автоматически внедряется в существующую задачу `assemble`, выполняя компиляцию и интеграцию библиотеки JNI.

```console
$ ./gradlew app:assembleDebug
> Task :nativelib:xmakeConfigureForArm64
> Task :nativelib:xmakeBuildForArm64
>> xmake build
[ 50%]: компиляция ccache.debug nativelib.cc
[ 75%]: компоновка.debug libnativelib.so
[100%]: сборка прошла успешно!
>> установка артефактов в /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/arm64-v8a
> Задача :nativelib:xmakeConfigureForArmv7
> Задача :nativelib:xmakeBuildForArmv7
>> xmake build
[ 50%]: компиляция ccache.debug nativelib.cc
[ 75%]: компоновка.debug libnativelib.so
[100%]: сборка прошла успешно!
>> установка артефактов в /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/armeabi-v7a
> Задача :nativelib:preBuild
> Задача :nativelib:assemble
> Задача :app:assembleDebug

Принудительная перекомпиляция JNI

$ ./gradlew nativelib:xmakeRebuild

Разработка

Сборка плагина

$ ./gradlew gradle-xmake-plugin:assemble

Публикация плагина

См.: https://guides.gradle.org/publishing-plugins-to-gradle-plugin-portal/

$ ./gradlew gradle-xmake-plugin:publishPlugins

Контакты

Поддержка проекта

Проект xmake-gradle является личным открытым проектом, его развитие требует вашей поддержки. Если вы хотите поддержать разработку проекта xmake-gradle, вы можете сделать пожертвование, чтобы помочь ему развиваться. 🙏 [Поддержать этот проект]

Спонсорство проекта

Спонсирование проекта позволит разместить ваш логотип и ссылку на веб-сайт здесь. [Спонсировать этот проект]

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xmake-io-xmake-gradle.git
git@api.gitlife.ru:oschina-mirror/xmake-io-xmake-gradle.git
oschina-mirror
xmake-io-xmake-gradle
xmake-io-xmake-gradle
master