- Notifications
You must be signed in to change notification settings - Fork7
A gradle plugin that integrates xmake seamlessly
License
NotificationsYou must be signed in to change notification settings
xmake-io/xmake-gradle
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Introduction (中文)
xmake-gradle is a gradle plugin that integrates xmake seamlessly.
If you want to know more, please refer to:
XMake installed on the system. Availablehere.
plugins { id 'org.tboox.gradle-xmake-plugin' version '1.2.2'}
buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath 'org.tboox:gradle-xmake-plugin:1.2.2' } repositories { mavenCentral() }}apply plugin: "org.tboox.gradle-xmake-plugin"
We addxmake.lua
toprojectdir/jni/xmake.lua
and enable xmake in build.gradle.
android { externalNativeBuild { xmake { path "jni/xmake.lua" } }}
The JNI project structure:
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")
android { defaultConfig { externalNativeBuild { xmake { // append the global cflags (optional) cFlags "-DTEST" // append the global cppflags (optional) cppFlags "-DTEST", "-DTEST2" // switch the build mode to `debug` for `xmake f -m debug` (optional) buildMode "debug" // set abi filters (optional), e.g. armeabi, armeabi-v7a, arm64-v8a, x86, x86_64 // we can also get abiFilters from defaultConfig.ndk.abiFilters abiFilters "armeabi-v7a", "arm64-v8a" // set the built targets //targets "xxx", "yyy" } } } externalNativeBuild { xmake { // enable xmake and set xmake.lua project file path path "jni/xmake.lua" // enable verbose output (optional), e.g. verbose, normal logLevel "verbose" // set c++stl (optional), e.g. c++_static/c++_shared, gnustl_static/gnustl_shared, stlport_static/stlport_shared stl "c++_shared" // set the given xmake program path (optional) // program /usr/local/bin/xmake // disable stdc++ library (optional) // stdcxx false // set the given ndk directory path (optional) // ndk "/Users/ruki/files/android-ndk-r20b/" // set sdk version of ndk (optional) // sdkver 21 } }}
ThexmakeBuild
will be injected toassemble
task automatically if the gradle-xmake-plugin has been applied.
$./gradlew app:assembleDebug>Task :nativelib:xmakeConfigureForArm64>Task :nativelib:xmakeBuildForArm64>> xmake build[ 50%]: ccache compiling.debug nativelib.cc[ 75%]: linking.debug libnativelib.so[100%]: build ok!>> install artifacts to /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/arm64-v8a>Task :nativelib:xmakeConfigureForArmv7>Task :nativelib:xmakeBuildForArmv7>> xmake build[ 50%]: ccache compiling.debug nativelib.cc[ 75%]: linking.debug libnativelib.so[100%]: build ok!>> install artifacts to /Users/ruki/projects/personal/xmake-gradle/nativelib/libs/armeabi-v7a>Task :nativelib:preBuild>Task :nativelib:assemble>Task :app:assembleDebug
$./gradlew nativelib:xmakeRebuild
$./gradlew gradle-xmake-plugin:assemble
seehttps://guides.gradle.org/publishing-plugins-to-gradle-plugin-portal/
$./gradlew gradle-xmake-plugin:publishPlugins
- Email:waruqi@gmail.com
- Homepage:xmake.io
- Community
- Chat on Reddit
- Chat on Telegram
- Chat on Discord
- Chat on QQ Group: 343118190, 662147501
- Source Code:GitHub,Gitee
- WeChat Public: tboox-os
Thank you to all our backers! 🙏 [Become a backer]
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
About
A gradle plugin that integrates xmake seamlessly
Topics
Resources
License
Code of conduct
Stars
Watchers
Forks
Sponsor this project
Packages0
No packages published