Skip to content
/ xmake Public
forked from xmake-io/xmake

🔥 A cross-platform build utility based on Lua

License

Notifications You must be signed in to change notification settings

mwik/xmake

 
 

Repository files navigation

xmake

A cross-platform build utility based on Lua

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 a productivity boost when developing and building projects.

If you want to know more, please refer to:

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
  • MFC Application

Builtin Plugins

Generate IDE project file plugin(makefile, vs2002 - vs2019 .. )

$ xmake project -k vs2017 -m "debug,release"
$ xmake project -k cmakelists
$ xmake project -k compile_commands

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 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 packages in xmake-repo:

add_requires("libuv master", "ffmpeg", "zlib 1.20.*")
add_requires("tbox >1.6.1", {optional = true, debug = true})
target("test")
    set_kind("shared")
    add_files("src/*.c")
    add_packages("libuv", "ffmpeg", "tbox", "zlib")

Download and use packages in third-party package manager:

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("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

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]

About

🔥 A cross-platform build utility based on Lua

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 61.6%
  • Lua 15.6%
  • C++ 10.3%
  • Assembly 5.1%
  • Objective-C 3.3%
  • GAP 3.1%
  • Other 1.0%