Changelog 
v2.9.7 
New features 
- #5813: Add 
before_configandafter_configfor rule - #5848: Support custom MSVC build tools, e.g. PortableBuildTools and msvc-wine
 - #5880: Use msvc package to build project
 - #5884: Add installtips for package
 - #5894: Add package.merge_staticlibs policy to merge package libs
 - #5948: Add 
lua.native-objectrule - #5911: Support for nuget packages
 
Changes 
- #5817: Improve default pic for packages
 - #5869: Add libstdc++ standard library modules support for gcc
 - #5923: Solve the package version and configs conflict
 
Bugs fixed 
v2.9.6 
New features 
- #5527: Add 
set_policy("compatibility.version", "3.0")to preview v3.0 features. - #5649: Add 
package.check_fcsnippets 
Changes 
- #5631: Add 
as_neededforadd_linkgroups - #5702: Improve hash module
 - #5688: Improve hashset module
 - #5711: Support to parse include deps for sdcc
 - #5727: Improve configs for add_requires
 - #5762: Improve bin2c speed
 
Bugs fixed 
v2.9.5 
New features 
- #5462: Add 
xmake l cli.bisect - #5488: Support for using cosmocc to build xmake binary
 - #5491: Provide single xmake binary with embeded lua files
 - #5580: Add 
@builtin/xrepoto add envs forxrepo env shell 
Changes 
- #5507: Use treeless to improve git.clone
 - #5536: Add jar generate in swig mode
 - #5573: Improve vsxmake generator performance
 - #5601: Improve utils.symbols.export_all rule to filter sourcefile path
 
Bugs fixed 
- #4750: Fix compile_commands generator for 
xmake tests - #5465: Fix lock package requires
 - #4760: Fix distcc client issue
 
v2.9.4 
New features 
- #5278: Add 
build.intermediate_directorypolicy to disable and custom intermediate directory - #5313: Add windows arm/arm64ec support
 - #5296: Add Intel LLVM Fortran Compiler support
 - #5384: Add 
add_bindirsfor package 
Changes 
- #5280: Add missing C++20 Modules file extension
 - #5251: Update 7z/curl for windows installer
 - #5286: Improve json to parse hex string
 - #5302: Improve Vala support
 - #5335: Improve 
xmake installandxpack, Addset_prefixdirapi for target - #5387: Improve 
xmake test - #5376: Improve module objectfiles handling and moduleonly package
 
Bugs Fixed 
- #5288: Fix 
xmake testfor unity build - #5270: Fix pch/include for gcc/clang
 - #5276: Fix find vc6
 - #5259: Fix the failure of the command line completion function
 
v2.9.3 
New features 
Changes 
- #5156: Improve to install cargo packages for rust
 
Bugs fixed 
- #5176: Fix VS toolset v144
 
v2.9.2 
New features 
- #5005: Show all apis
 - #5003: Add build.fence policy
 - #5060: Support Verilator target build to static library
 - #5074: Add 
xrepo downloadcommand to download package source - #5086: Add check support for package
 - #5103: Add qt ts files building
 - #5104: Call where in find_program
 
Changes 
- #5077: Use x64 host compiler for msvc when building x86 target
 - #5109: Support runpath/rpath for add_rpathdirs
 - #5132: Improve ifort/icc/icx support on windows
 
Bugs Fixed 
v2.9.1 
New features 
- #4874: Add Harmony SDK support
 - #4889: Add signal module to register signal handler in lua
 - #4925: Add native modules support
 - #4938: Support for cppfront/h2
 
Changes 
- Improve packages to support for clang-cl
 - #4893: Improve rc includes deps
 - #4928: Improve to build and link speed
 - #4931: Update pdcurses
 - #4973: Improve to select script
 
Bugs fixed 
- #4882: Fix install deps with --group
 - #4877: Fix compile error for xpack with unity build
 - #4887: Fix object deps
 
v2.8.9 
New features 
- #4843: Endianness/Byte-order detection on build machine
 
Changes 
- #4798: Improve wasi sdk detect
 - #4772: Improve tools.cmake to support vs2022 preview (v144)
 - #4813: Add gb2312 encoding
 - #4864: Improve to extract symbols for gdb
 - #4831: Allow target:fileconfig() for headerfiles
 - #4846: Improve to show progress
 
Bugs Fixed 
- Fix select_script match pattern
 - #4763: Fix
 - #4807: Fix nimble::find_package
 - #4857: Fix parse basic options
 
v2.8.8 
Changes 
- Add 
package:check_sizeof() 
Bugs Fixed 
- #4774: Fix android symbol strip
 - #4769: Fix cross toolchain and format
 - #4776: Fix soname for linux
 - #4638: Fix vsxmake with --menu config
 
v2.8.7 
New features 
- #4544: Support to wait process timeout for 
xmake test - #4606: Add 
add_versionfilesapi in package - #4709: Add cosmocc toolchain support
 - #4715: Add is_cross() api in description scope
 - #4747: Add 
build.always_update_configfilespolicy 
Changes 
- #4575: Check invalid scope name
 - Add more loong64 support
 - Improve dlang/dmd support for frameworks
 - #4571: Improve 
xmake testoutput - #4609: Improve to detect vs build tool envirnoments
 - #4614: Support android ndk 26b
 - #4473: Enable warning output by default
 - #4477: Improve runtimes to support libc++/libstdc++
 - #4657: Improve to select script pattern
 - #4673: Refactor modules support
 - #4746: Add native modules support for cmake generator
 
Bugs Fixed 
v2.8.6 
New features 
- Add 
network.modepolicy - #1433: Add 
xmake packcommand to generate NSIS/zip/tar.gz/rpm/srpm/runself packages like cmake/cpack - #4435: Support batchsize for UnityBuild in Group Mode
 - #4485: Support package.install_locally
 - Support NetBSD
 
Changes 
- #4484: Improve swig rule
 - Improve Haiku support
 
Bugs fixed 
v2.8.5 
New features 
- #1452: Improve link mechanism and order
 - #1438: Support code amalgamation
 - #3381: Add 
xmake testsupport - #4276: Support custom scope api
 - #4286: Add Apple XROS support
 - #4345: Support check sizeof
 - #4369: Add windows.manifest.uac policy
 
Changes 
- #4284: Improve builtin includes
 
Bugs fixed 
- #4256: Fix intellisense for vsxmake/c++modules
 
v2.8.3 
New features 
- #4122: Support Lua Debugger (EmmyLua)
 - #4132: Support cppfront
 - #4147: Add hlsl2spv rule
 - #4226: Support sanitizers for package and policy
 - Add lib.lua.package module
 - Add 
run.autobuildpolicy - Add global policies 
xmake g --policies= 
Changes 
- #4119: Improve to support emcc toolchain and emscripten package
 - #4154: Add 
xmake -r --shallow targetto rebuild target without deps - Add global ccache storage directory
 - #4137: Support Qt6 for Wasm
 - #4173: Add recheck argument to on_config
 - #4200: Improve remote build to support debugging xmake source code.
 - #4209: Add extra and pedantic warnings
 
Bugs fixed 
- #4110: Fix extrafiles
 - #4115: Fix compile_commands generator for clangd
 - #4199: Fix compile_commands generator for c++ modules
 - Fix os.mv fail on window
 - #4214: Fix rust workspace build error
 
v2.8.2 
New features 
- #4002: Add soname and version support
 - #1613: Add avx512 and sse4.2 for add_vectorexts
 - #2471: Add set_encodings to set source/target encodings
 - #4071: Support the stm8 assembler on the sdcc toolchain.
 - #4101: Add force includes for c/c++
 - #2384: Add extrafiles for vs/vsxmake generator
 
Changes 
- #3960: Improve msys2/crt64 support
 - #4032: Remove some old deprecated apis
 - Improve to upgrade vcproj files in tools.msbuild
 - Support add_requires("xmake::xxx") package
 - #4049: Improve rust to support cross-compilation
 - Improve clang modules support
 
Bugs fixed 
- Fix exit all child processes on macOS/Linux
 
v2.8.1 
New features 
- #3821: Add longpath option for windows installer
 - #3828: Add support for zypper package manager
 - #3871: Improve tools.msbuild to support for upgrading vsproj
 - #3148: Support grpc for protobuf
 - #3889: Support to add library path for add_links
 - #3912: Add set_pmxxheader to support objc precompiled header
 - add_links support library file path
 
Changes 
- #3752: Improve os.getenvs for windows
 - #3371: Improve tools.cmake to support ninja generator for wasm
 - #3777: Improve to find package from pkg-config
 - #3815: Improve tools.xmake to pass toolchains for windows
 - #3857: Improve to generate compile_commands.json
 - #3892: Improve to search packages from description
 - #3916: Improve to build swift program, support for multiple modules
 - Update lua runtime to 5.4.6
 
Bugs fixed 
- #3755: Fix find_tool from xmake/packages
 - #3787: Fix packages from conan 2.x
 - #3839: Fix vs_runtime for conan 2.x
 
v2.7.9 
New features 
Changes 
- #3669: Improve cmake generator to support add_cxflags with the given tool
 - #3679: Improve 
xrepo clean - #3662: Improve cmake/make generator for lex/yacc project
 - #3697: Improve trybuild/cmake
 - #3730: Improve c++modules package installation
 
Bugs fixed 
- #3596: Fix check_cxxfuncs and check_cxxsnippets
 - #3603: Fix 
xmake update - #3614: Fix qt envirnoment when running target
 - #3628: Fix msys2/mingw setenv and os.exec issue
 - Fix setenv for msys/mingw
 
v2.7.8 
New features 
- #3518: Profile compile and link performance
 - #3522: Add has_cflags, has_xxx for target
 - #3537: Add --fix for clang.tidy checker
 
Changes 
- #3433: Improve to build Qt project on msys2/mingw64 and wasm
 - #3419: Support fish shell envirnoment
 - #3455: Dlang incremental build support
 - #3498: Improve to bind package virtual envirnoments
 - #3504: Add swig java support
 - #3508: Improve trybuild/cmake to support for switching toolchain
 - disable build cache for msvc, because msvc's preprocessor is too slow.
 
Bugs fixed 
v2.7.7 
New features 
- Add Haiku support
 - #3326: Add 
xmake checkto check project code (clang-tidy) and configuration - #3332: add custom http headers when downloading packages
 
Changes 
- #3318: Improve dlang toolchains
 - #2591: Improve target analysis
 - #3342: Improve to configure working and build directories
 - #3373: Improve std modules support for clang-17
 - Improve to strip/optimization for dmd/ldc2
 
Bugs fixed 
- #3317: Fix languages for qt project.
 - #3321: Fix dependfile when generating configiles
 - #3296: Fix build error on macOS arm64
 
v2.7.6 
New features 
- #3228: Add support of importing modules from packages
 - #3257: Add support for iverilog and verilator
 - Support for xp and vc6.0
 - #3214: Completion on xrepo install packages
 
Changes 
- #3255: Improve clang libc++ module support
 - Support for compiling xmake using mingw
 - Improve compatibility issues with xmake running on win xp
 - Add pure lua json implementation instead of lua-cjson if the external dependencies are enabled
 
Bugs fixed 
- #3229: Fix find rc.exe for vs2015
 - #3271: Fix macro defines with spaces
 - #3273: Fix nim link error
 - #3286: Fix compile_commands for clangd
 
v2.7.5 
New features 
Changes 
- #3216: Add intel one api toolkits detection
 - #3020: Add 
--lsp=clangdto improve to generate compile_commands.json - #3215: Add includedirs and defines to c51
 - #3251: Improve to build zig and c program
 
Bugs fixed 
- #3203: Fix compile_commands
 - #3222: Fix precompiled headers in ObjC
 - #3240: Fix target run with single arguments
 - #3238: Fix clang module mapper
 
v2.7.4 
New features 
- #3049: Add 
xmake formatplugin - Add 
plugin.compile_commands.autoupdaterule - #3172: Add xmake.sh
 - #3168: add support of C++23 standard modules on msvc
 
Changes 
- #3056: Improve zig support
 - #3060: Improve to detect msys2 for clang toolchains envirnoment
 - #3071: Support rc for llvm/clang toolchain
 - #3122: Generate dependencies of preprocessed modules to avoid importing #ifdef import
 - #3125: Compile private C++20 modules
 - #3133: Add support of internal partitions
 - #3146: Add default components for packages
 - #3192: JSON output for auto complete
 
Bugs fixed 
- Fix requires-lock bug
 - #3065: Fix missing package dependences
 - #3082: Fix build.ninja generator
 - #3092: Fix xrepo add-repo error handing
 - #3013: Fix and support windows UNC path
 - #2902: Fix file not access by another process occupied
 - #3074: Fix CMakelists generator
 - #3141: Fix import order on GCC and force it on clang and msvc #3141
 - Fix tools/xmake package build directory
 - #3159: Fix compile_commands for CLion
 
v2.7.3 
New features 
- A new optional configuration syntax. It is LSP friendly, automatically calls target_end() to achieve scope isolation.
 - #2944: Add 
gnu-rm.binaryandgnu-rm.staticrules and tests for embed project - #2636: Support package components
 - Support armasm/armasm64 for msvc
 - #3023: Add support for debugging with renderdoc
 - #3022: Add flags for specific compilers and linkers
 - #3025: C++ exception enabled/disabled switch method
 - #3017: Support ispc compiler
 
Changes 
- #2925: Improve doxygen plugin
 - #2948: Support OpenBSD
 - Add 
xmake g --insecure-ssl=yoption to disable ssl certificate when downloading packages - #2971: Stabilize vs and vsxmake project generation
 - #3000: Incremental compilation support for modules
 - #3016: Improve clang/msvc to better support std modules
 
Bugs fixed 
- #2949: Fix vs group
 - #2952: Fix armlink for long args
 - #2954: Fix c++ module partitions path issue
 - #3033: Detect circular modules dependency
 
v2.7.2 
New features 
- #2140: Support Windows Arm64
 - #2719: Add 
package.librarydeps.strict_compatibilityto strict compatibility for package linkdeps - #2810: Support os.execv to run shell script file
 - #2817: Improve rule to support dependence order
 - #2824: Pass cross-file to meson.install and trybuild
 - #2856: Improve to debug package using the debug source directory
 - #2859: Improve trybuild to build 3rd source library using xmake-repo scripts
 - #2879: Support for dynamic creation and injection of rules and targets in script scope
 - #2374: Allow xmake package to embed rules and scripts
 - Add clang-cl toolchain
 
Changes 
- #2745: Improve os.cp to support symlink
 - #2773: Improve vcpkg packages to support freebsd
 - #2778: Improve Improve xrepo.env for target
 - #2783: Add digest algorithm option for wdk signtool
 - #2787: Improve json to support empty array
 - #2782: Improve to find matlab and runtime
 - #2793: Improve mconfdialog
 - #2804: Support macOS arm64/x86_64 cross-compilation for installing packages
 - #2809: Improve cl optimization option
 - Improve trybuild for meson/cmake/autoconf
 - #2846: Improve to generate config files
 - #2866: Better control over the order of execution of rules
 
Bugs fixed 
- #2740: Fix build c++ modules stuck and slower for msvc
 - #2875: Fix build linux driver error
 - #2885: Fix pch not found with msvc/ccache
 
v2.7.1 
New features 
- #2555: Add fwatcher module and 
xmake watchplugin command - Add 
xmake service --pull 'build/**' outputdirto pull the given files in remote server - #2641: Improve C++20 modules, support headerunits and project generators
 - #2679: Support Mac Catalyst
 
Changes 
- #2576: More flexible package fetching from cmake
 - #2577: Improve add_headerfiles(), add 
{install = false}support - #2603: Disable 
-fdirectives-onlyfor ccache by default - #2580: Set stdout to line buffering
 - #2571: Improve task scheduling for parallel and distributed compilation based on memory/cpu usage
 - #2410: Improve cmakelists generator
 - #2690: Improve to pass toolchains to packages
 - #2686: Support for incremental compilation and parse header file deps for keil/armcc/armclang
 - #2562: Improve include deps for rc.exe
 - Improve the default parallel building jobs number
 
Bugs fixed 
- #2614: Fix building submodules2 tests for msvc
 - #2620: Fix build cache for incremental compilation
 - #2177: Fix python.library segmentation fault for macosx
 - #2708: Fix link error for mode.coverage rule
 - Fix rpath for macos/iphoneos frameworks and application
 
v2.6.9 
New features 
Changes 
- Improve tools.cmake to support wasm
 - #2491: Fallback to local compiler/cache from remote if server is unreachable
 - #2514: Disable Unity Build for project generator
 - #2473: Improve apt::find_package to find it from pc files
 - #2512: Improve remote service to support timeout configuration
 
Bugs fixed 
- #2488: Fix remote compilation from windows to linux
 - #2504: Fix remote build bug on msys2/cygwin
 - #2525: Fix install package deps and stuck
 - #2557: Fix cmake.find_package links bug
 - Fix cache-induced path conflicts in preprocessed files
 
v2.6.8 
New features 
- #2447: Add qt.qmlplugin rule and support of qmltypesregistrar
 - #2446: Support target group for 
xmake install - #2469: Generate vcpkg-configuration.json
 
Changes 
- Add 
preprocessor.linemarkerspolicy to disable linemarkers to speed up ccache/distcc - #2389: Improve 
xmake runto parallel running of targets - #2417: Switch the default value of option/showmenu
 - #2440: Improve package installation error messages
 - #2438: Make sure the solution and project file unchanged by sorting those tables
 - #2434: Improve plugins manager, allow to handle multiples plugin repositories
 - #2421: Improve config option menu
 - #2425: Add 
preprocessor.gcc.directives_onlypolicy - #2455: Improve optimize options for emcc
 - #2467: Add compile fallback for msvc/ccache
 - #2452: Add build.warning policy
 
Bugs Fixed 
- #2435: fix the search bug when the package name has an extension name.
 - #2445: Fix ccache bug for msvc
 - #2452: Fix warnings output for ccache
 
v2.6.7 
New features 
- #2318: Add 
xmake f --policies=config argument to modify project policies 
Changes 
- fallback to source code build if the precompiled package is error
 - #2387: Improve pkgconfig and find_package
 - Add 
build.ccachepolicy 
Bugs fixed 
- #2382: Fix headeronly package configs
 - #2388: Fix path bug
 - #2385: Fix cmake/find_package
 - #2395: Fix c++modules
 - Fix find_qt bug
 
v2.6.6 
New features 
- #2327: Support nvc/nvc++/nvfortran in nvidia-hpc-sdk
 - Add path instance interfaces
 - #2344: Add lz4 compress module
 - #2349: Add keil/c51 project support
 - #274: Distributed compilation support
 - Use builtin local cache instead of ccache
 
Changes 
- #2309: Support user authorization for remote compilation
 - Improve remote compilation to support lz4 compression
 
Bugs fixed 
- Fix lua stack when select package versions
 
v2.6.5 
New features 
- #2138: Support template package
 - #2185: Add 
--appledev=simulatorto improve apple simulator support - #2227: Improve cargo package with Cargo.toml file
 - Improve 
add_requiresto support git commit as version - #622: Support remote compilation
 - #2282: Add 
add_filegroupsto support file group for vs/vsxmake/cmake generator 
Changes 
- #2137: Improve path module
 - Reduce 50% xmake binary size on macOS
 - Improve tools/autoconf,cmake to support toolchain switching.
 - #2221: Improve registry api to support unicode
 - #2225: Support to parse import dependencies for protobuf
 - #2265: Sort CMakeLists.txt
 - Speed up 
os.files 
Bugs fixed 
- #2233: Fix c++ modules deps
 
v2.6.4 
New features 
- #2011: Support to inherit base package
 - Support to build and run xmake on sparc, alpha, powerpc, s390x and sh4
 - Add on_download for package()
 - #2021: Support Swift for linux and windows
 - #2024: Add asn1c support
 - #2031: Support linker scripts and version scripts for add_files
 - #2033: Catch ctrl-c to get current backtrace for debugging stuck
 - #2059: Add 
xmake update --integrateto integrate for shell - #2070: Add built-in xrepo environments
 - #2117: Support to pass toolchains to package for other platforms
 - #2121: Support to export the given symbols list
 
Changes 
- #2036: Improve xrepo to install packages from configuration file, e.g. 
xrepo install xxx.lua - #2039: Improve filter directory for vs generator
 - #2025: Support phony and headeronly target for vs generator
 - Improve to find vstudio and codesign speed
 - #2077: Improve vs project generator to support cuda
 
Bugs fixed 
- #2005: Fix path.extension
 - #2008: Fix windows manifest
 - #2016: Fix object filename confict for vs project generator
 
v2.6.3 
New features 
- #1298: Support vcpkg manifest mode and select version for package/install
 - #1896: Add 
python.libraryrule to build pybind modules - #1939: Add 
remove_files,remove_headerfilesand markdel_filesas deprecated - Made on_config as the official api for rule/target
 - Add riscv32/64 support
 - #1970: Add CMake wrapper for Xrepo C and C++ package manager.
 - Add builtin github mirror pac files, 
xmake g --proxy_pac=github_mirror.lua 
Changes 
- #1923: Improve to build linux driver, support set custom linux-headers path
 - #1962: Improve armclang toolchain to support to build asm
 - #1959: Improve vstudio project generator
 - #1969: Add default option description
 
Bugs fixed 
v2.6.2 
New features 
- #1902: Support to build linux kernel driver modules
 - #1913: Build and run targets with given group pattern
 
Change 
- #1872: Escape characters for set_configvar
 - #1888: Improve windows installer to avoid remove other files
 - #1895: Improve 
plugin.vsxmake.autoupdaterule - #1893: Improve to detect icc and ifort toolchains
 - #1905: Add support of external headers without experimental for msvc
 - #1904: Improve vs201x generator
 - Add 
XMAKE_THEMEenvirnoment variable to switch theme - #1907: Add 
-f/--forceto force to create project in a non-empty directory - #1917: Improve to find_package and configurations
 
Bugs fixed 
v2.6.1 
New features 
- #1799: Support mixed rust & c++ target and cargo dependences
 - Add 
utils.glsl2spvrules to compile .vert/.frag shader files to spirv file and binary c header file 
Changes 
- Switch to Lua5.4 runtime by default
 - #1776: Improve system::find_package, support to find package from envs
 - #1786: Improve apt:find_package, support to find alias package
 - #1819: Add precompiled header to cmake generator
 - Improve C++20 module to support std libraries for msvc
 - #1792: Add custom command in vs project generator
 - #1835: Improve MDK program supports and add 
set_runtimes("microlib") - #1858: Improve to build c++20 modules with libraries
 - Add $XMAKE_BINARY_REPO and $XMAKE_MAIN_REPO repositories envs
 - #1865: Improve openmp projects
 - #1845: Install pdb files for static library
 
Bugs Fixed 
- Fix semver to parse build string with zero prefix
 - #50: Fix rule and build bpf program errors
 - #1610: Fix 
xmake f --menunot responding in vscode and support ConPTY terminal virtkeys 
v2.5.9 
New features 
- #1736: Support wasi-sdk toolchain
 - Support Lua 5.4 runtime
 - Add gcc-8, gcc-9, gcc-10, gcc-11 toolchains
 - #1623: Support find_package from cmake
 - #1747: Add 
set_kind("headeronly")for target to install files for headeronly library - #1019: Support Unity build
 - #1438: Support code amalgamation, 
xmake l cli.amalgamate - #1765: Support nim language
 - #1762: Manage and switch the given package envs for 
xrepo env - #1767: Support Circle compiler
 - #1753: Support armcc/armclang toolchains for Keil/MDK
 - #1774: Add table.contains api
 - #1735: Add custom command in cmake generator
 
Changes 
- #1528: Check c++17/20 features
 - #1729: Improve C++20 modules for clang/gcc/msvc, support inter-module dependency compilation and parallel optimization
 - #1779: Remove builtin 
-Gdfor ml.exe/x86 - #1781: Improve get.sh installation script to support nixos
 
v2.5.8 
New features 
- #388: Pascal Language Support
 - #1682: Add optional lua5.3 backend instead of luajit to provide better compatibility
 - #1622: Support Swig
 - #1714: Support build local embed cmake projects
 - #1715: Support to detect compiler language standards as features and add 
check_macros - Support Loongarch
 
Change 
- #1618: Improve vala to support to generate libraries and bindings
 - Improve Qt rules to support Qt 4.x
 - Improve 
set_symbols("debug")to generate pdb file for clang on windows - #1638: Improve to merge static library
 - Improve on_load/after_load to support to add target deps dynamically
 - #1675: Rename dynamic and import library suffix for mingw
 - #1694: Support to define a variable without quotes for configuration files
 - Support Android NDK r23
 - Add 
c++latestandclatestforset_languages - #1720: Add 
save_scopeandrestore_scopeto fixcheck_xxxapis - #1726: Improve compile_commands generator to support nvcc
 
Bugs fixed 
- #1671: Fix incorrect absolute path after installing precompiled packages
 - #1689: Fix unicode chars bug for vsxmake
 
v2.5.7 
New features 
- #1534: Support to compile Vala lanuage project
 - #1544: Add utils.bin2c rule to generate header from binary file
 - #1547: Support to run and get output of c/c++ snippets in option
 - #1567: Package "lock file" support to freeze dependencies
 - #1597: Support to compile *.metal files to generate *.metalib and improve xcode.application rule
 
Change 
- #1540: Better support for compilation of automatically generated code
 - #1578: Improve add_repositories to support relative path better
 - #1582: Improve installation and os.cp to reserve symlink
 
Bugs fixed 
- #1531: Fix error info when loading targets failed
 
v2.5.6 
New features 
- #1483: Add 
os.joinenvs()and improve package tools envirnoments - #1523: Add 
set_allowedmodes,set_allowedplatsandset_allowedarchs - #1523: Add 
set_defaultmode,set_defaultplatandset_defaultarchs 
Change 
- Improve vs/vsxmake project generator to support vs2022
 - #1513: Improve precompiled binary package compatibility on windows/msvc
 - Improve to find vcpkg root directory on windows
 - Improve to support Qt6
 
Bugs fixed 
- #489: Fix run os.execv with too long envirnoment value on windows
 
v2.5.5 
New features 
- #1421: Add prefix, suffix and extension options for target names
 - #1422: Support search packages from vcpkg, conan
 - #1424: Set binary as default target kind
 - #1140: Add a way to ask xmake to try to download dependencies from a certain package manager
 - #1339: Improve 
xmake packageto generate new local/remote packages - Add 
appletvosplatform support for AppleTV,xmake f -p appletvos - #1437: Add headeronly library type for package to ignore 
vs_runtime - #1351: Support export/import current configs
 - #1454: Support to download and install precompiled image packages from xmake-mirror
 
Change 
- #1425: Improve tools/meson to load msvc envirnoments
 - #1442: Support to clone package resources from git url
 - #1389: Support to add toolchain envs to 
xrepo env - #1453: Support to export protobuf includedirs
 - Support vs2022
 
Bugs fixed 
- #1413: Fix hangs on fetching packages
 - #1420: Fix config and packages cache
 - #1445: Fix WDK driver sign error
 - #1465: Fix missing link directory
 
v2.5.4 
New features 
- #1323: Support find and install package from 
apt,add_requires("apt::zlib1g-dev") - #1337: Add environment vars to change package directories
 - #1338: Support import and export installed packages
 - #1087: Add 
xrepo env shelland support load envs fromadd_requires/xmake.lua - #1313: Support private package for 
add_requires/add_deps - #1358: Support to set mirror url to speedup download package
 - #1369: Support arm/arm64 packages for vcpkg, thanks @fallending
 - #1405: Add portage package manager support, thanks @Phate6660
 
Change 
- Improve 
find_packageand addpackage:find_packagefor xmake package - Remove deprecated 
set_config_handset_config_h_prefixapis - #1343: Improve to search local package files
 - #1347: Improve to vs_runtime configs for binary package
 - #1353: Improve del_files() to speedup matching files
 - #1349: Improve 
xrepo env shellto support powershell 
Bugs fixed 
- #1380: Fix add packages errors
 - #1381: Fix add local git source for package
 - #1391: Fix cuda/nvcc toolchain
 
v2.5.3 
New features 
- #1259: Support 
add_files("*.def")to export symbols for windows/dll - #1267: add 
find_package("nvtx") - #1274: add 
platform.linux.bpfrule to build linux/bpf program - #1280: Support fetchonly package to improve find_package
 - Support to fetch remote ndk toolchain package
 - #1268: Add 
utils.install.pkgconfig_importfilesrule to install*.pcimport file - #1268: Add 
utils.install.cmake_importfilesrule to install*.cmakeimport files - #348: Add 
platform.longpathspolicy to support git longpaths - #1314: Support to install and use conda packages
 - #1120: Add 
core.base.cpumodule and improveos.cpuinfo() - #1325: Add builtin git variables for 
add_configfiles 
Change 
- #1275: Support conditionnal targets for vsxmake plugin
 - #1290: Improve android ndk to support >= r22
 - #1311: Add packages lib folder to PATH for vsxmake project
 
Bugs fixed 
v2.5.2 
New features 
- #955: Support 
zig ccandzig c++as c/c++ compiler - #955: Support zig cross-compilation
 - #1177: Improve to detect terminal and color codes
 - #1216: Pass custom configuration scripts to xrepo
 - Add linuxos builtin module to get linux system information
 - #1217: Support to fetch remote toolchain package when building project
 - #1123: Add 
rule("utils.symbols.export_all")to export all symbols for windows/dll - #1181: Add 
utils.platform.gnu2mslib(mslib, gnulib)module api to convert mingw/xxx.dll.a to msvc xxx.lib - #1246: Improve rules and generators to support commands list
 - #1239: Add 
add_extsourcesto improve find external packages - #1241: Support add .manifest files for windows program
 - Support to use 
xrepo remove --allto remove all packages - #1254: Support to export packages to parent target
 
Change 
- #1226: Add missing qt include directories
 - #1183: Improve c++ lanuages to support Qt6
 - #1237: Add qt.ui files for vsxmake plugin
 - Improve vs/vsxmake plugins to support precompiled header and intellisense
 - #1090: Simplify integration of custom code generators
 - #1065: Improve protobuf rule to support compile_commands generators
 - #1249: Improve vs/vsxmake generator to support startproject
 - #605: Improve to link orders for add_deps/add_packages
 - Remove deprecated 
add_defines_h_if_okandadd_defines_hapis for option 
Bugs fixed 
v2.5.1 
New features 
- #1035: The graphics configuration menu fully supports mouse events, and support scroll bar
 - #1098: Support stdin for os.execv
 - #1079: Add autoupdate plugin rule for vsxmake, 
add_rules("plugin.vsxmake.autoupdate") - Add 
xmake f --vs_runtime='MT'andset_runtimes("MT")to set vs runtime for targets and packages - #1032: Support to enum registry keys and values
 - #1026: Support group for vs/vsxmake project
 - #1178: Add 
add_requireconfs()api to rewrite configs of depend packages - #1043: Add 
luarocks.modulerule for luarocks-build-xmake - #1190: Support for Apple Silicon (macOS ARM)
 - #1145: Support Qt deploy for Windows, thanks @SirLynix
 
Change 
- #1072: Fix and improve to parse cl deps
 - Support utf8 for ui modules and 
xmake f --menu - Improve to support zig on macOS
 - #1135: Improve multi-toolchain and multi-platforms for targets
 - #1153: Improve llvm toolchain to support sysroot on macOS
 - #1071: Improve to generate vs/vsxmake project to support for remote packages
 - Improve vs/vsxmake project plugin to support global 
set_arch()setting - #1164: Improve to launch console programs for vsxmake project
 - #1179: Improve llvm toolchain and add isysroot
 
Bugs fixed 
- #1091: Fix incorrect ordering of inherited library dependencies
 - #1105: Fix c++ language intellisense for vsxmake
 - #1132: Fix TrimEnd bug for vsxmake
 - #1142: Fix git not found when installing packages
 - Fix macos.version bug for macOS Big Sur
 - #1084: Fix 
add_defines()bug (contain spaces) - #1195: Fix unicode problem for vs and improve find_vstudio/os.exec
 
v2.3.9 
New features 
- Add new xrepo command to manage C/C++ packages
 - Support for installing packages of cross-compilation
 - Add musl.cc toolchains
 - #1009: Support select and install any version package, e.g. 
add_requires("libcurl 7.73.0", {verify = false}) - #1016: Add license checking for target/packages
 - #1017: Support external/system include directories 
add_sysincludedirsfor package and toolchains - #1020: Support to find and install pacman package on archlinux and msys2
 - Support mouse for 
xmake f --menu 
Change 
- #997: Support to set std lanuages for 
xmake project -k cmake - #998: Support to install vcpkg packages with windows-static-md
 - #996: Improve to find vcpkg directory
 - #1008: Improve cross toolchains
 - #1030: Improve xcode.framework and xcode.application rules
 - #1051: Add 
editandembedtoset_symbols()only for msvc - #1062: Improve 
xmake project -k vsplugin. 
v2.3.8 
New features 
- #955: Add zig project templates
 - #956: Add wasm platform and support Qt/Wasm SDK
 - Upgrade luajit vm and support for runing on mips64 device
 - #972: Add 
depend.on_changed()api to simplify adding dependent files - #981: Add 
set_fpmodels()for math optimization mode - #980: Support Intel C/C++ and Fortran Compiler
 - #986: Support for 
c11andc17for MSVC Version 16.8 and Above - #979: Add Abstraction for OpenMP. 
add_rules("c++.openmp") 
Change 
- #958: Improve mingw platform to support llvm-mingw toolchain
 - Improve 
add_requires("zlib~xxx")to support for installing multi-packages at same time - #977: Improve find_mingw for windows
 - #978: Improve toolchain flags order
 - Improve Xcode toolchain to support for macOS/arm64
 
Bugs fixed 
v2.3.7 
New features 
- #2941: Add support for winget
 - Add xmake-tinyc installer without msvc compiler for windows
 - Add tinyc compiler toolchain
 - Add emcc compiler toolchain (emscripten) to compiling to asm.js and WebAssembly
 - #947: Add 
xmake g --network=privateto enable the private network 
Change 
- #907: Improve to the linker optimization for msvc
 - Improve to detect qt sdk environment
 - #918: Improve to support cuda11 toolchains
 - Improve Qt support for ubuntu/apt
 - Improve CMake project generator
 - #931: Support to export packages with all dependences
 - #930: Support to download package without version list directly
 - #927: Support to switch arm/thumb mode for android ndk
 - Improve trybuild/cmake to support android/mingw/iphoneos/watchos toolchains
 
Bugs fixed 
- #903: Fix install vcpkg packages fails
 - #912: Fix the custom toolchain
 - #914: Fix bad light userdata pointer for lua on some aarch64 devices
 
v2.3.6 
New features 
- Add 
xmake project -k xcodegenerator (use cmake) - #870: Support gfortran compiler
 - #887: Support zig compiler
 - #893: Add json module
 - #898: Support cross-compilation for golang
 - #275: Support go package manager to install go packages
 - #581: Support dub package manager to install dlang packages
 
Change 
- #868: Support new cl.exe dependency report files, 
/sourceDependencies xxx.json - #902: Improve to detect cross-compilation toolchain
 
v2.3.5 
New features 
- Add 
xmake show -l envsto show all builtin envirnoment variables - #861: Support search local package file to install remote package
 - #854: Support global proxy settings for curl, wget and git
 
Change 
- #828: Support to import sub-directory files for protobuf rules
 - #835: Improve mode.minsizerel to add /GL flags for msvc
 - #828: Support multi-level directories for protobuf/import
 - #838: Support to override builtin-rules for 
add_files("src/*.c", {rules = {"xx", override = true}}) - #847: Support to parse include deps for rc file
 - Improve msvc tool chain, remove the dependence of global environment variables
 - #857: Improved 
set_toolchains()when cross-compilation is supported, specific target can be switched to host toolchain and compiled at the same time 
Bugs fixed 
- Fix the progress bug for theme
 - #829: Fix invalid sysroot path for macOS
 - #832: Fix find_packages bug for the debug mode
 
v2.3.4 
New features 
- #630: Support *BSD system, e.g. FreeBSD, ..
 - Add wprint builtin api to show warnings
 - #784: Add 
set_policy()to set and modify some builtin policies - #780: Add set_toolchains/set_toolsets for target and improve to detect cross-compilation toolchains
 - #798: Add 
xmake showplugin to show some builtin configuration values and infos - #797: Add ninja theme style, e.g. 
xmake g --theme=ninja - #816: Add mode.releasedbg and mode.minsizerel rules
 - #819: Support ansi/vt100 terminal control
 
Change 
- #771: Check includedirs, linkdirs and frameworkdirs
 - #774: Support ltui windows resize for 
xmake f --menu - #782: Add check flags failed tips for add_cxflags, ..
 - #808: Support add_frameworks for cmakelists
 - #820: Support independent working/build directory
 
Bug fixed 
v2.3.3 
New features 
- #727: Strip and generate debug symbols file (.so/.dSYM) for android/ios program
 - #687: Support to generate objc/bundle program.
 - #743: Support to generate objc/framework program.
 - Support to compile bundle, framework, mac application and ios application, and all some project templates
 - Support generate ios *.ipa file and codesign
 - Add xmake.cli rule to develop lua program with xmake core engine
 
Change 
- #750: Improve qt.widgetapp rule to support private slot
 
v2.3.2 
New features 
- Add powershell theme for powershell terminal
 - Add 
xmake --dry-run -vto dry run building target and only show verbose build command. - #712: Add sdcc platform and support sdcc compiler
 
Change 
- #589: Improve and optimize build speed, supports parallel compilation and linking across targets
 - Improve the ninja/cmake generator
 - #728: Improve os.cp to support reserve source directory structure
 - #732: Improve find_package to support 
homebrew/cmakepacakges - #695: Improve android abi
 
Bugs fixed 
- Fix the link errors output issues for msvc
 - #718: Fix download cache bug for package
 - #722: Fix invalid package deps
 - #719: Fix process exit bug
 - #720: Fix compile_commands generator
 
v2.3.1 
New features 
- #675: Support to compile 
*.cas c++,add_files("*.c", {sourcekind = "cxx"}). - #681: Support compile xmake on msys/cygwin and add msys/cygwin platform
 - Add socket/pipe io modules and support to schedule socket/process/pipe in coroutine
 - #192: Try building project with the third-party buildsystem
 - Enable color diagnostics output for gcc/clang
 - #588: Improve project generator, 
xmake project -k ninja, support for build.ninja 
Change 
- #665: Support to parse *nix style command options, thanks @OpportunityLiu
 - #673: Improve tab complete to support argument values
 - #680: Improve get.sh scripts and add download mirrors
 - Improve process scheduler
 - #651: Improve os/io module syserrors tips
 
Bugs fixed 
- Fix incremental compilation for checking the dependent file
 - Fix log output for parsing xmake-vscode/problem info
 - #684: Fix linker errors for android ndk on windows
 
v2.2.9 
New features 
- #569: Add c++ modules build rules
 - Add 
xmake project -k xmakefilegenerator - 620: Add global 
~/.xmakerc.luafor all projects. - 593: Add 
core.base.socketmodule. 
Change 
- #563: Separate build rules for specific language files from action/build
 - #570: Add 
qt.widgetappandqt.quickapprules - #576: Uses 
set_toolchaininstead ofadd_toolsandset_tools - Improve 
xmake createaction - #589: Improve the default build jobs number to optimize build speed
 - #598: Improve find_package to support .tbd libraries on macOS
 - #615: Support to install and use other archs and ios conan packages
 - #629: Improve hash.uuid and implement uuid v4
 - #639: Improve to parse argument options to support -jN
 
Bugs fixed 
- #567: Fix out of memory for serialize
 - #566: Fix link order problem with remote packages
 - #565: Fix run path for vcpkg packages
 - #597: Fix run 
xmake requirecommand too slowly - #634: Fix mode.coverage rule and check flags
 
v2.2.8 
New features 
- Add protobuf c/c++ rules
 - #468: Add utf-8 support for io module on windows
 - #472: Add 
xmake project -k vsxmakeplugin to support call xmake from vs/msbuild - #487: Support to build the selected files for the given target
 - Add filelock for io
 - #513: Support for android/termux
 - #517: Add 
add_cleanfilesapi for target - #537: Add 
set_runenvapi to override os/envs 
Changes 
- #257: Lock the whole project to avoid other process to access.
 - Attempt to enable /dev/shm for the os.tmpdir
 - #542: Improve vs unicode output for link/cl
 - Improve binary bitcode lua scripts in the program directory
 
Bugs fixed 
- #549: Fix error caused by the new vsDevCmd.bat of vs2019
 
v2.2.7 
New features 
- #455: support clang as cuda compiler, try 
xmake f --cu=clang - #440: Add 
set_rundir()andadd_runenvs()api for target/run - #443: Add tab completion support
 - Add 
on_link,before_linkandafter_linkfor rule and target - #190: Add 
add_rules("lex", "yacc")rules to support lex/yacc projects 
Changes 
- #430: Add 
add_cucodegens()api to improve set codegen for cuda - #432: support deps analyze for cu file (for CUDA 10.1+)
 - #437: Support explict git source for xmake update, 
xmake update github:xmake-io/xmake#dev - #438: Support to only update scripts, 
xmake update --scriptonly dev - #433: Improve cuda to support device-link
 - #442: Improve test library
 
v2.2.6 
New features 
- #380: Add support to export compile_flags.txt
 - #382: Simplify simple scope settings
 - #397: Add clib package manager support
 - #404: Support Qt for android and deploy android apk
 - Add some qt empty project templates, e.g. 
widgetapp_qt,quickapp_qt_staticandwidgetapp_qt_static - #415: Add 
--cu-cxxconfig arguments tonvcc/-ccbin - Add 
--ndk_stdcxx=yand--ndk_cxxstl=gnustl_staticargument options for android NDK 
Changes 
- Improve remote package manager
 - Improve 
target:on_xxxscripts to support to matchandroid|armv7-a@macosx,linux|x86_64pattern - Improve loadfile to optimize startup speed, decrease 98% time
 
Bugs fixed 
- #400: fix c++ languages bug for qt rules
 
v2.2.5 
New features 
- Add 
string.serializeandstring.deserializeto serialize and deserialize object, function and others. - Add 
xmake g --menu - #283: Add 
target:installdir()andset_installdir()api for target - #260: Add 
add_platformdirsapi, we can define custom platforms - #310: Add theme feature
 - #318: Add 
add_installfilesapi to target - #339: Improve 
add_requiresandfind_packageto integrate the 3rd package manager - #327: Integrate with Conan package manager
 - Add the builtin api 
find_packages("pcre2", "zlib")to find multiple packages - #320: Add template configuration files and replace all variables before building
 - #179: Generate CMakelist.txt file for 
xmake projectplugin - #361: Support vs2019 preview
 - #368: Support 
private, public, interfaceto improve dependency inheritance like cmake - #284: Add passing user configs description for 
package() - #319: Add 
add_headerfilesto improve to set header files and directories - #342: Add some builtin help functions for 
includes(), e.g.check_cfuncs 
Changes 
- Improve to switch version and debug mode for the dependent packages
 - #264: Support 
xmake update devon windows - #293: Add 
xmake f/g --mingw=xxxconfiguration option and improve to find_mingw - #301: Improve precompiled header file
 - #322: Add 
option.add_features,option.add_cxxsnippetsandoption.add_csnippets - Remove some deprecated interfaces of xmake 1.x, e.g. 
add_option_xxx - #327: Support conan package manager for 
lib.detect.find_package - Improve 
lib.detect.find_packageand add builtinfind_packages("zlib 1.x", "openssl", {xxx = ...})api - Mark 
set_modes()as deprecated, we useadd_rules("mode.debug", "mode.release")instead of it - #353: Improve 
target:set,target:addand addtarget:delto modify target configuration - #356: Add 
qt_add_static_plugins()api to support static Qt sdk - #351: Support yasm for generating vs201x project
 - Improve the remote package manager.
 
Bugs fixed 
- Fix cannot call 
set_optimize()to set optimization flags when existsadd_rules("mode.release") - #289: Fix unarchive gzip file failed on windows
 - #296: Fix 
option.add_includedirsfor cuda - #321: Fix find program bug with $PATH envirnoment
 
v2.2.3 
New features 
- #233: Support windres for mingw platform
 - #239: Add cparser compiler support
 - Add plugin manager 
xmake plugin --help - Add 
add_syslinksapi to add system libraries dependence - Add 
xmake l time xmake [--rebuild]to record compilation time - #250: Add 
xmake f --vs_sdkver=10.0.15063.0to change windows sdk version - Add 
lib.luajit.ffiandlib.luajit.jitextension modules - #263: Add new target kind: object to only compile object files
 
Changes 
- #229: Improve to select toolset for vcproj plugin
 - Improve compilation dependences
 - Support *.xz for extractor
 - #249: revise progress formatting to space-leading three digit percentages
 - #247: Add 
-Dand--diagnosisinstead of--backtrace - #259: Improve on_build, on_build_file and on_xxx for target and rule
 - #269: Clean up the temporary files at last 30 days
 - Improve remote package manager
 - Support to add packages with only header file
 - Support to modify builtin package links, e.g. 
add_packages("xxx", {links = {}}) 
Bugs fixed 
- Fix state inconsistency after failed outage of installation dependency package
 
v2.2.2 
New features 
- Support fasm assembler
 - Add 
has_config,get_config, andis_configapis - Add 
set_configto set the default configuration - Add 
$xmake --tryto try building project using third-party buildsystem - Add 
set_enabled(false)to disable target - #69: Add remote package management, 
add_requires("tbox ~1.6.1") - #216: Add windows mfc rules
 
Changes 
- Improve to detect Qt envirnoment and support mingw
 - Add debug and release rules to the auto-generated xmake.lua
 - #178: Modify the shared library name for mingw.
 - Support case-insensitive path pattern-matching for 
add_files()on windows - Improve to detect Qt sdk directory for 
detect.sdks.find_qt - #184: Improve 
lib.detect.find_packageto support vcpkg - #208: Improve rpath for shared library
 - #225: Improve to detect vs envirnoment
 
Bug fixed 
- #177: Fix the dependent target link bug
 - Fix high cpu usage bug and Exit issues for 
$ xmake f --menu - #197: Fix Chinese path for generating vs201x project
 - Fix wdk rules bug
 - #205: Fix targetdir,objectdir not used in vsproject
 
v2.2.1 
New features 
- #158: Support CUDA Toolkit and Compiler
 - Add 
set_toolsandadd_toolsapis to change the toolchains for special target - Add builtin rules: 
mode.debug,mode.release,mode.profileandmode.check - Add 
is_mode,is_archandis_platbuiltin apis in the custom scripts - Add color256 codes
 - #160: Support Qt compilation environment and add 
qt.console,qt.applicationrules - Add some Qt project templates
 - #169: Support yasm for linux, macosx and windows
 - #159: Support WDK driver compilation environment
 
Changes 
- Add FAQ to the auto-generated xmake.lua
 - Support android NDK >= r14
 - Improve warning flags for swiftc
 - #167: Improve custom rules
 - Improve 
os.filesandos.dirsapi - #171: Improve build dependence for qt rule
 - Implement 
make cleanfor generating makefile plugin 
Bugs fixed 
- Fix force to add flags bug
 - #157: Fix generate pdb file error if it's output directory does not exists
 - Fix strip all symbols bug for macho target file
 - #168: Fix generate vs201x project bug with x86/x64 architectures
 
v2.1.9 
New features 
- Add 
del_files()api to delete files in the files list - Add 
rule(),add_rules()api to implement the custom build rule and improveadd_files("src/*.md", {rule = "markdown"}) - Add 
os.filesize()api - Add 
core.ui.xxxcui components - Add 
xmake f --menuto configure project with a menu configuration interface - Add 
set_valuesapi tooption() - Support to generate a menu configuration interface from user custom project options
 - Add source file position to interpreter and search results in menu
 
Changes 
- Improve to configure cross-toolchains, add tool alias to support unknown tool name, .e.g 
xmake f --cc=gcc@ccmips.exe - #151: Improve to build the share library for the mingw platform
 - Improve to generate makefile plugin
 - Improve the checking errors tips
 - Improve 
add_cxflags.., force to set flags without auto checking:add_cxflags("-DTEST", {force = true}) - Improve 
add_files, add force block to force to set flags without auto checking:add_files("src/*.c", {force = {cxflags = "-DTEST"}}) - Improve to search the root project directory
 - Improve to detect vs environment
 - Upgrade luajit to 2.1.0-beta3
 - Support to run xmake on linux (arm, arm64)
 - Improve to generate vs201x project plugin
 
Bugs fixed 
- Fix complation dependence
 - #151: Fix 
os.nuldev()for gcc on mingw - #150: Fix the command line string limitation for 
ar.exe - Fix 
xmake f --crosserror - Fix 
os.cdto the windows root path bug 
v2.1.8 
New features 
- Add 
XMAKE_LOGFILEenvironment variable to dump the output info to file - Support tinyc compiler
 
Changes 
- Improve support for IDE/editor plugins (.e.g vscode, sublime, intellij-idea)
 - Add 
.gitignorefile when creating new projects - Improve to create template project
 - Improve to detect toolchains on macosx without xcode
 - Improve 
set_config_headerto supportset_config_header("config", {version = "2.1.8", build = "%Y%m%d%H%M"}) 
Bugs fixed 
- #145: Fix the current directory when running target
 
v2.1.7 
New features 
- Add 
add_importsto bulk import modules for the target, option and package script - Add 
xmake -y/--yesto confirm the user input by default - Add 
xmake l package.manager.install xxxto install software package - Add xmake plugin for vscode editor, xmake-vscode
 - Add 
xmake macro ..to run the last command 
Changes 
- Support 24bits truecolors for 
cprint() - Support 
@loader_pathand$ORIGINforadd_rpathdirs() - Improve 
set_version("x.x.x", {build = "%Y%m%d%H%M"})and add build version - Move docs directory to xmake-docs repo
 - Improve install and uninstall actions and support DESTDIR and PREFIX envirnoment variables
 - Optimize to detect flags
 - Add 
COLORTERM=nocolorto disable color output - Remove 
and_bindingsandadd_rbindingsapi - Disable to output colors code to file
 - Update project templates with tbox
 - Improve 
lib.detect.find_programinterface - Enable colors output for windows cmd
 - Add 
-w|--warningarguments to enable the warnings output 
Bugs fixed 
- Fix 
set_pcxxheaderbug - #140: Fix 
os.tmpdir()in fakeroot - #142: Fix 
os.getenvcharset bug on windows - Fix compile error with spaces path
 - Fix setenv empty value bug
 
v2.1.6 
Changes 
- Improve 
add_filesto configure the compile option of the given files - Inherit links and linkdirs from the dependent targets and options
 - Improve 
target.add_depsand add inherit config, .e.gadd_deps("test", {inherit = false}) - Remove the binary files of 
tbox.pkg - Use 
/Ziinstead of/ZIfor msvc 
Bugs fixed 
- Fix target deps
 - Fix 
target:addandoption:addbug - Fix compilation and installation bug on archlinux
 
v2.1.5 
New features 
- #83: Add 
add_csnippetandadd_cxxsnippetintooptionfor detecting some compiler features. - #83: Add user extension modules to detect program, libraries and files.
 - Add 
find_program,find_file,find_library,find_toolandfind_packagemodule interfaces. - Add 
net.*anddevel.*extension modules - Add 
val()api to get the value of builtin-variable, .e.gval("host"),val("env PATH"),val("shell echo hello")andval("reg HKEY_LOCAL_MACHINE\\XX;Value") - Support to compile the microsoft resource file (.rc)
 - Add 
has_flags,featuresandhas_featuresfor detect module interfaces. - Add 
option.on_check,option.after_checkandoption.before_checkapi - Add 
target.on_loadapi - #132: Add 
add_frameworkdirsapi - Add 
lib.detect.has_xxxandlib.detect.find_xxxapis. - Add 
add_moduledirsapi - Add 
includesapi instead ofadd_subdirsandadd_subfiles - #133: Improve the project plugin to generate 
compile_commands.jsonby runxmake project -k compile_commands - Add 
set_pcheaderandset_pcxxheaderto support the precompiled header, support gcc, clang, msvc - Add 
xmake f -p crossplatform and support the custom platform 
Changes 
- #87: Add includes and links from target deps automatically
 - Improve 
importto load user extension and global modules - #93: Improve 
xmake luato run a single line command - Improve to print gcc error and warning info
 - Improve 
printinterface to dump table - #111: Add 
--rootcommon option to allow run xmake command as root - #113: Privilege manage when running as root, store the root privilege and degrade.
 - Improve 
xxx_scriptinxmake.luato support pattern match, .e.gon_build("iphoneos|arm*", function (target) end) - improve builtin-variables to support to get the value envirnoment and registry
 - Improve to detect vstudio sdk and cross toolchains envirnoment
 - #71: Improve to detect compiler and linker from env vars
 - Improve the option detection (cache and multi-jobs) and increase 70% speed
 - #129: Check link deps and cache the target file
 - Support 
*.asmsource files for vs201x project plugin - Mark 
add_bindingsandadd_rbindingsas deprecated - Optimize 
xmake rebuildspeed on windows - Move 
core.project.tasktocore.base.task - Move 
echoandapp2ipaplugins to xmake-plugins repo. - Add new api 
set_config_header("config.h", {prefix = ""})instead ofset_config_handset_config_h_prefix 
Bugs fixed 
- Fix 
try-catch-finally - Fix interpreter bug when parsing multi-level subdirs
 - #115: Fix the path problem of the install script 
get.sh - Fix cache bug for import()
 
v2.1.4 
New features 
- #68: Add 
$(programdir)and$(xmake)builtin variables - add 
is_hostapi to get current host operating system - #79: Improve 
xmake luato run interactive commands, read-eval-print (REPL) 
Changes 
- Modify option menu color.
 - #71: Improve to map optimization flags for cl.exe
 - #73: Attempt to get executable path as xmake's program directory
 - Improve the scope of 
xmake.luainadd_subdirsand use independent sub-scope to avoid dirty scope - #78: Get terminal size in runtime and soft-wrap the help printing
 - Avoid generate 
.xmakedirectory if be not in project 
Bugs fixed 
- #67: Fix 
sudo make installpermission problem - #70: Fix check android compiler error
 - Fix temporary file path conflict
 - Fix 
os.hostandos.archinterfaces - Fix interpreter bug for loading root api
 - #77: fix 
cprintno color reset eol 
v2.1.3 
New features 
- #65: Add 
set_defaultapi for target to modify default build and install behavior - Allows to run 
xmakecommand in project subdirectories, it will find the project root directory automatically - Add 
add_rpathdirsfor target and option 
Changes 
- #61: Provide safer 
xmake installandxmake uninstalltask with administrator permission - Provide 
rpm,debandosxpkginstall package - #63: More safer build and install xmake
 - #61: Check run command as root
 - Improve check toolchains and implement delay checking
 - Add user tips when scanning and generating 
xmake.luaautomatically 
Bugs fixed 
- Fix error tips for checking xmake min version
 - #60: Fix self-build for macosx and windows
 - #64: Fix compile android 
armv8-aerror - #50: Fix only position independent executables issue for android program
 
v2.1.2 
New features 
- Add aur package script and support to install xmake from yaourt
 - Add set_basename api for target
 
Changes 
- Support vs2017
 - Support compile rust for android
 - Improve vs201x project plugin and support multi-modes compilation.
 
Bugs fixed 
- Fix cannot find android sdk header files
 - Fix checking option bug
 - #57: Fix code files mode to 0644
 
v2.1.1 
New features 
- Add 
--links,--linkdirsand--includedirsconfigure arguments - Add app2ipa plugin
 - Add dictionary syntax style for 
xmake.lua - Provide smart scanning and building mode without 
xmake.lua - Add 
set_xmakeverapi forxmake.lua - Add 
add_frameworksapi forobjcandswift - Support multi-languages extension and add 
golang,dlangandrustlanguage - Add optional 
target_end,option_end,task_endapis for scope - Add 
golang,dlangandrustproject templates 
Changes 
- Support vs2017 for the project plugin
 - Improve gcc error and warning tips
 - Improve lanuage module
 - Improve print interface, support lua print and format output
 - Automatically scan project files and generate it for building if xmake.lua not exists
 - Modify license to Apache License 2.0
 - Remove some binary tools
 - Remove install.bat script and provide nsis install package
 - Rewrite documents using docute
 - Improve 
os.run,os.exec,os.cp,os.mvandos.rminterfaces and support wildcard pattern - Optimize the output info and add 
-q|--quietoption - Improve makefile generator, uses $(XX) variables for tools and flags
 
Bugs fixed 
- #41: Fix checker bug for windows
 - #43: Avoid to generate unnecessary .xmake directory
 - Add c++ stl search directories for android
 - Fix compile error for rhel 5.10
 - Fix 
os.iorunbug 
v2.0.5 
New features 
- Add some interpreter builtin-modules
 - Support ml64 assembler for windows x64
 
Changes 
- Improve ipairs and pairs interfaces and support filter
 - Add filters for generating vs201x project
 - Remove 
core/tools(msys toolchains) and uses xmake to compile core sources on windows - Remove 
xmake/packagesfor templates 
Bugs fixed 
- Fix 
-def:xxx.defflags failed for msvc - Fix ml.exe assembler script
 - Fix options linking order bug
 
v2.0.4 
New features 
- Add native shell support for 
xmake.lua. .e.gadd_ldflags("$(shell pkg-config --libs sqlite3)") - Enable pdb symbol files for windows
 - Add debugger support on windows (vsjitdebugger, ollydbg, windbg ... )
 - Add 
getenvinterface for the global scope ofxmake.lua - Add plugin for generating vstudio project file (vs2002 - vs2015)
 - Add 
set_defaultapi for option 
Changes 
- Improve builtin-variable format
 - Support option for string type
 
Bugs fixed 
- Fix check ld failed without g++ on linux
 - Fix compile 
*.cxxfiles failed 
v2.0.3 
New features 
- Add check includes dependence automatically
 - Add print colors
 - Add debugger support, .e.g 
xmake run -d program ... 
Changes 
- Improve the interfaces of run shell
 - Upgrade luajit to v2.0.4
 - Improve to generate makefile plugin
 - Optimizate the multitasking compiling speed
 
Bugs fixed 
- Fix install directory bug
 - Fix the root directory error for 
importinterface - Fix check visual stdio error on windows
 
v2.0.2 
Changes 
- Change install and uninstall actions
 - Update templates
 - Improve to check function
 
Bugs fixed 
- #7: Fix create project bug with '[targetname]'
 - #9: Support clang with c++11
 - Fix api scope leaks bug
 - Fix path bug for windows
 - Fix check function bug
 - Fix check toolchains failed
 - Fix compile failed for android on windows
 
v2.0.1 
New features 
- Add task api for running custom tasks
 - Add plugin expansion and provide some builtin plugins
 - Add export ide project plugin(.e.g makefile and will support to export other projects for vs, xcode in feature)
 - Add demo plugin for printing 'hello xmake'
 - Add make doxygen documents plugin
 - Add macro script plugin
 - Add more modules for developing plugin
 - Add exception using try/catch and simplify grammar for plugin script
 - Add option bindings
 - Show progress when building
 
Changes 
- Rewrite interpreter for xmake.lua
 - More strict syntax detection mechanism
 - More strict api scope for xmake.lua
 - Simplify template development
 - Extend platforms, tools, templates and actions fastly
 - Simplify api and support import modules
 - Remove dependence for gnu make/nmake, no longer need makefile
 - Optimize speed for building and faster x4 than v1.0.4
 - Optimize automatic detection
 - Modify some api name, but be compatible with the old version
 - Optimize merging static library
 - Simplify cross compilation using argument 
--sdk=xxx - Simplify boolean option for command line, .e.g 
xmake config --xxx=[y|n|yes|no|true|false] - Merge iphoneos and iphonesimulator platforms
 - Merge watchos and watchsimulator platformss
 
Bugs fixed 
- #3: ArchLinux compilation failed
 - #4: Install failed for windows
 - Fix envirnoment variable bug for windows
 
v1.0.4 
New features 
- Support windows assembler
 - Add some project templates
 - Support swift codes
 - Add -v argument for outputing more verbose info
 - Add apple platforms:watchos, watchsimulator
 - Add architecture x64, amd64, x86_amd64 for windows
 - Support switch static and share library
 - Add 
-j/--jobsargument for supporting multi-jobs 
Changes 
- Improve 
add_filesapi and support to add*.o/obj/a/libfiles for merging static library and object files - Optimize installation and remove some binary files
 
Bugs fixed 
- #1: Install failed for win7
 - Fix checking toolchains bug
 - Fix install script bug
 - Fix install bug for linux x86_64
 
v1.0.3 
New features 
- Add 
set_runscriptapi and support custom action - Add import api and support import modules in xmake.lua, .e.g os, path, utils ...
 - Add new architecture: arm64-v8a for android
 
Bugs fixed 
- Fix api bug for 
set_installscript - Fix install bug for windows 
x86_64 - Fix relative path bug