GitHub - tboox/xmake: A cross-platform build utility based on Lua
source link: https://github.com/tboox/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:
Installation
via curl
bash <(curl -fsSL https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.sh)
via wget
bash <(wget https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.sh -O -)
via powershell
Invoke-Expression (Invoke-Webrequest 'https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.ps1' -UseBasicParsing).Content
Simple description
target("console") set_kind("binary") add_files("src/*.c")
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
Support platforms
- Windows (x86, x64, amd64, x86_amd64)
- Macosx (i386, x86_64)
- Linux (i386, x86_64, cross-toolchains ...)
- Android (armv5te, armv6, armv7-a, armv8-a, arm64-v8a)
- iPhoneOS (armv7, armv7s, arm64, i386, x86_64)
- WatchOS (armv7k, i386)
- Mingw (i386, x86_64)
Support Languages
- C/C++
- Objc/Objc++
- Swift
- Assembly
- Golang
- Rust
- Dlang
- Cuda
Builtin Plugins
Macros script plugin
$ xmake m -b # start to record $ xmake f -p iphoneos -m debug $ 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"
More Plugins
Please download and install from the plugins repository xmake-plugins.
IDE/Editor Integration
Examples
Create a c++ console project:
xmake create -l c++ -t 1 console or xmake create --language=c++ --template=1 console
Project xmakefile: xmake.lua
target("console") set_kind("binary") add_files("src/*.c")
Configure project:
This is optional, if you compile the targets only for linux, macosx and windows and the default compilation mode is release.
xmake f -p iphoneos -m debug or xmake f --plat=macosx --arch=x86_64 or xmake f -p windows or xmake config --plat=iphoneos --mode=debug or xmake config --plat=android --arch=armv7-a --ndk=xxxxx or xmake config -p linux -a i386 or xmake config -p mingw --cross=i386-mingw32- --toolchains=/xxx/bin or xmake config -p mingw --sdk=/mingwsdk or xmake config --help
Compile project:
xmake or xmake -r or xmake --rebuild
Run target:
xmake r console or xmake run console
Debug target:
xmake r -d console or xmake run -d console
Package all:
xmake p or xmake package or xmake package console or xmake package -o /tmp or xmake package --output=/tmp
Package all archs using macro:
xmake m package
or xmake m package -p iphoneos
or xmake m package -p macosx -f "-m debug" -o /tmp/
or xmake m package --help
Install targets:
xmake i or xmake install or xmake install console or xmake install -o /tmp or xmake install --output=/tmp
If you need known more detailed usage,please refer to documents or run:
xmake -h or xmake --help or xmake config --help or xmake package --help or xmake macro --help ...
The simple xmake.lua file:
-- the debug mode if is_mode("debug") then -- enable the debug symbols set_symbols("debug") -- disable optimization set_optimize("none") end -- the release mode if is_mode("release") then -- set the symbols visibility: hidden set_symbols("hidden") -- enable fastest optimization set_optimize("fastest") -- strip all symbols set_strip("all") end -- add target target("test") -- set kind set_kind("static") -- add files add_files("src/*.c")
If you want to know more, please refer to:
Documents
Projects
Some projects using xmake:
Contacts
- Email:[email protected]
- Homepage:tboox.org
- Community:/r/tboox on Reddit
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
-
68
README.md tbox
-
31
Introduction Since my English is not very good, this article uses Google translation. If you can’t understand, please understand. After more than four months, ...
-
36
README.md
-
21
xmake vs cmake对比分析 首先,不得不承认,cmake很强大,发展了这么多年,整个生态已经相当完善,功能也相当丰富,这点xmake目前是比不了的。 当初我做xmake的目的,也并不是为了完全替代cmake,这没啥...
-
58
c++ modules已经正式纳入了c++20草案,msvc和clang也已经基本实现了对modules-ts的支持,随着c++20的脚步离我们越来越近,xmake也开始对c++m...
-
6
What is XMake? XMake is a modern C/C++ build system based on Lua. Its grammar is concise and easy to use, friendly to novices, even if you don't know Lua at all, you can get sta...
-
7
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt ,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在...
-
1
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile...
-
3
xmake v2.6.1 released, Switch to Lua5.4 runtime, Support Rust and Cplusplus mixed compilation
-
6
Xmake v2.7.3 Released: Package Components and C++ Modules Incremental Build Support ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK