Menu

Tree [f372a5] master /
 History

HTTPS access


File Date Author Commit
 core 2018-10-30 ruki ruki [6559be] fix libsv num parser
 scripts 2018-11-11 ruki ruki [7d5215] impl xmake update on windows
 tests 2018-10-15 ruki ruki [29598d] remove some unsupported nvcc flags
 xmake 2018-11-11 ruki ruki [f372a5] improve to update with sudo on win7
 .appveyor.yml 2018-09-12 ruki ruki [b9a7a6] remove luacov in ci
 .gitignore 2018-08-22 ruki ruki [0681ba] add ignore projects
 .travis.yml 2018-09-12 ruki ruki [b9a7a6] remove luacov in ci
 CHANGELOG.md 2018-11-10 ruki ruki [0bd6fc] modify changelog
 CODE_OF_CONDUCT.md 2018-08-28 yangjz1125 yangjz1125 [49298d] fix CODE_OF_CONDUCT translations.
 CONTRIBUTING.md 2018-10-30 Shlomi Fish Shlomi Fish [5d33e8] Correct some grammar in CONTRIBUTING.md .
 LICENSE.md 2018-01-23 ruki ruki [08b707] insert bool config to menuconf
 NOTICE.md 2017-12-06 ruki ruki [abe879] disable halfdelay for curses
 README.md 2018-10-30 Shlomi Fish Shlomi Fish [d67995] Correct the names of techs.
 README_zh.md 2018-10-12 ruki ruki [59610a] update readme
 install 2016-09-17 ruki ruki [d09980] remove xmake.out
 makefile 2017-12-11 ruki ruki [9c2bf2] improve makefile for arch detect

Read Me

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 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/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

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
$ 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_plat("windows", "mingw") then
        add_defines("XXX")
    end

Custom script:

target("test")
    set_kind("static")
    add_files("src/*.cpp")
    after_build(function (target)
        print("build %s ok!", target:targetfile())
    end)

Extension Modules:

target("test")
    set_kind("shared")
    add_files("src/*.c")
    on_load(function (target)
        import("lib.detect.find_package")
        target:add(find_package("zlib"))
    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]










Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.