

GitHub - xmake-io/xmake: ? A cross-platform build utility based on Lua
source link: https://github.com/xmake-io/xmake
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
Introduction (中文)
xmake is a cross-platform build utility based on lua.
The project focuses on making development and building easier and provides many features (.e.g package, install, plugin, macro, action, option, task ...), so that any developer can quickly pick it up and enjoy the productivity boost when developing and building project.
If you want to known more, please refer to:
_
__ ___ __ __ __ _| | ______
\ \/ / | \/ |/ _ | |/ / __ \
> < | \__/ | /_| | < ___/
/_/\_\_|_| |_|\__ \|_|\_\____|
by ruki, tboox.org
Installation
via curl
bash <(curl -fsSL https://raw.githubusercontent.com/xmake-io/xmake/master/scripts/get.sh)
via wget
bash <(wget https://raw.githubusercontent.com/xmake-io/xmake/master/scripts/get.sh -O -)
via powershell
Invoke-Expression (Invoke-Webrequest 'https://raw.githubusercontent.com/xmake-io/xmake/master/scripts/get.ps1' -UseBasicParsing).Content
Simple description
Package dependences
An official xmake package repository: xmake-repo
Build project
$ xmake
Run target
$ xmake run console
Debug target
$ xmake run -d console
Configure platform
$ xmake f -p [windows|linux|macosx|android|iphoneos ..] -a [x86|arm64 ..] -m [debug|release] $ xmake
Menu configuration
$ xmake f --menu
Package management
Supported platforms
- Windows (x86, x64)
- macOS (i386, x86_64)
- Linux (i386, x86_64, cross-toolchains ...)
- Android (armv5te, armv6, armv7-a, armv8-a, arm64-v8a)
- iOS (armv7, armv7s, arm64, i386, x86_64)
- WatchOS (armv7k, i386)
- MinGW (i386, x86_64)
Supported Languages
- C
- C++
- Objective-C and Objective-C++
- Swift
- Assembly
- Golang
- Rust
- Dlang
- Cuda
Supported Projects
- Static Library
- Shared Library
- Console
- Cuda Program
- Qt Application
- WDK Driver (umdf/kmdf/wdm)
- WinSDK Application
Builtin Plugins
Macros script plugin
$ xmake m -b # start to record $ xmake f -p iphoneos -m debug $ xmake $ xmake f -p android --ndk=~/files/android-ndk-r16b $ xmake $ xmake m -e # stop to record $ xmake m . # playback commands
Run the custom lua script plugin
$ xmake l ./test.lua
$ xmake l -c "print('hello xmake!')"
$ xmake l lib.detect.find_tool gcc
Generate IDE project file plugin(makefile, vs2002 - vs2017 .. )
$ xmake project -k vs2017 -m "debug,release"
Generate doxygen document plugin
$ xmake doxygen [srcdir]
More Plugins
Please download and install from the plugins repository xmake-plugins.
IDE/Editor Integration
More Examples
Debug and release modes:
add_rules("mode.debug", "mode.release") target("console") set_kind("binary") add_files("src/*.c") if is_mode("debug") then add_defines("DEBUG") end
Download and use remote packages:
add_requires("libuv master", "ffmpeg", "zlib 1.20.*") add_requires("tbox >1.6.1", {optional = true, debug = true}) add_requires("brew::pcre2/libpcre2-8", {alias = "pcre2"}) add_requires("conan::OpenSSL/1.0.2n@conan/stable", {alias = "openssl"}) target("test") set_kind("shared") add_files("src/*.c") add_packages("libuv", "ffmpeg", "tbox", "zlib", "pcre2", "openssl")
Find and use local packages:
target("test") set_kind("shared") add_files("src/*.c") on_load(function (target) target:add(find_packages("zlib", "openssl", "brew::pcre2/libpcre2-8", "conan::OpenSSL/1.0.2n@conan/stable")) end)
Project Examples
Some projects using xmake:
Example Video
Contacts
- Email:[email protected]
- Homepage:tboox.org
- Community:/r/tboox on reddit
- ChatRoom:Char on telegram, Chat on gitter
- Source Code:Github, Gitee
Thanks
This project exists thanks to all the people who have contributed:
- TitanSnow: provide the xmake logo and install scripts
- uael: provide the semantic versioning library sv
Backers
Thank you to all our backers! ? [Become a backer]
Sponsors
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK