Giter VIP home page Giter VIP logo

ozcoco / xmake Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xmake-io/xmake

0.0 0.0 0.0 18.22 MB

🔥 A cross-platform build utility based on Lua

Home Page: https://xmake.io

License: Apache License 2.0

C 40.46% Makefile 0.75% Lua 29.41% C++ 11.11% Assembly 10.91% Shell 0.24% Roff 0.09% Elixir 0.22% PowerShell 0.11% Cuda 0.25% D 0.01% Go 0.02% Lex 0.01% Yacc 0.02% Objective-C++ 0.01% Objective-C 5.98% QML 0.01% Rust 0.01% Swift 0.01% Perl 0.42%

xmake's Introduction

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

Download and build

Processing architecture

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:

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]

xmake's People

Contributors

waruqi avatar opportunityliu avatar ruihe774 avatar xigalto avatar razer-rbi avatar rivy avatar orzuk-lmj avatar xdamman avatar colorfulorangecn avatar fy0 avatar chenzhekl avatar shlomif avatar ivechan avatar baisai avatar 0x17de avatar ccinv avatar enorof avatar 71e6fd52 avatar cmcaine avatar paul-reilly avatar gitter-badger avatar tbfly avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.