## 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
```bash
$ 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
```bash
$ 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 .. )
```bash
$ xmake project -k vs2017 -m "debug,release"
```
## More Plugins
Please download and install from the plugins repository [xmake-plugins](https://github.com/tboox/xmake-plugins).
## IDE/Editor Integration
* [xmake-vscode](https://github.com/tboox/xmake-vscode)
* [xmake-sublime](https://github.com/tboox/xmake-sublime)
* [xmake-idea](https://github.com/tboox/xmake-idea)
* [xmake.vim](https://github.com/luzhlon/xmake.vim) (third-party, thanks [@luzhlon](https://github.com/luzhlon))
## Examples
Create a c++ console project:
```bash
xmake create -l c++ -t 1 console
or xmake create --language=c++ --template=1 console
```
Project xmakefile: xmake.lua
```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.
```bash
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:
```bash
xmake
or xmake -r
or xmake --rebuild
```
Run target:
```bash
xmake r console
or xmake run console
```
Debug target:
```bash
xmake r -d console
or xmake run -d console
```
Package all:
```bash
xmake p
or xmake package
or xmake package console
or xmake package -o /tmp
or xmake package --output=/tmp
```
Package all archs using macro:
```bash
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:
```bash
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](https://github.com/waruqi/xmake/wiki/documents)
or run:
```bash
xmake -h
or xmake --help
or xmake config --help
or xmake package --help
or xmake macro --help
...
```
The simple xmake.lua file:
```c
-- 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
* [Documents](https://github.com/waruqi/xmake/wiki/documents)
* [Codes](https://github.com/waruqi/xmake)
## Projects
Some projects using xmake:
* [tbox](https://github.com/waruqi/tbox)
* [gbox](https://github.com/waruqi/gbox)
* [libsvx](https://github.com/caikelun/libsvx)
* [more](https://github.com/waruqi/xmake/wiki/xmake-projects)
## Contacts
* Email:[waruqi@gmail.com](mailto:waruqi@gmail.com)
* Homepage:[tboox.org](http://www.tboox.org)
* Community:[/r/tboox on Reddit](https://www.reddit.com/r/tboox/)
## Thanks
This project exists thanks to all the people who have [contributed](CONTRIBUTING.md):