Skip to content

Changelog

v2.9.7

New features

  • #5813: Add before_config and after_config for 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-object rule
  • #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

  • #5856: Fix compile c++modules for clang
  • #5858: Fix the precompiled header for gcc

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_needed for add_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

  • #5645: Fix xmake watch for linux
  • #5686: Fix module scanning

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/xrepo to add envs for xrepo 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_directory policy to disable and custom intermediate directory
  • #5313: Add windows arm/arm64ec support
  • #5296: Add Intel LLVM Fortran Compiler support
  • #5384: Add add_bindirs for 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 install and xpack, Add set_prefixdir api for target
  • #5387: Improve xmake test
  • #5376: Improve module objectfiles handling and moduleonly package

Bugs Fixed

  • #5288: Fix xmake test for 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

  • #4637: Add mix generator for xpack
  • #5107: Add deb generator for xpack
  • #5148: Add on_source in package

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 download command 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

  • #5059: Fix load huge targets stuck
  • #5029: Fix crash on termux

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_versionfiles api in package
  • #4709: Add cosmocc toolchain support
  • #4715: Add is_cross() api in description scope
  • #4747: Add build.always_update_configfiles policy

Changes

  • #4575: Check invalid scope name
  • Add more loong64 support
  • Improve dlang/dmd support for frameworks
  • #4571: Improve xmake test output
  • #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

  • #4596: Fix remote build cache
  • #4689: Fix deps inherit

v2.8.6

New features

  • Add network.mode policy
  • #1433: Add xmake pack command 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 test support
  • #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.autobuild policy
  • Add global policies xmake g --policies=

Changes

  • #4119: Improve to support emcc toolchain and emscripten package
  • #4154: Add xmake -r --shallow target to 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

  • #3613: Add wasm.preloadfiles configuration for wasm
  • #3703: Support for conan >=2.0.5

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

  • #3436: Fix complete and menuconf
  • #3463: Fix c++modules cache issue
  • #3545: Fix parsedeps for armcc

v2.7.7

New features

  • Add Haiku support
  • #3326: Add xmake check to 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

  • #3201: Add completer and xrepo complete
  • #3233: Add MASM32 sdk toolchain

Changes

  • #3216: Add intel one api toolkits detection
  • #3020: Add --lsp=clangd to 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 format plugin
  • Add plugin.compile_commands.autoupdate rule
  • #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.binary and gnu-rm.static rules 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=y option 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_compatibility to 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 watch plugin command
  • Add xmake service --pull 'build/**' outputdir to 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-only for 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

  • #2474: Add icx and dpcpp toolchains
  • #2523: Improve LTO support
  • #2527: Add set_runargs api

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.linemarkers policy to disable linemarkers to speed up ccache/distcc
  • #2389: Improve xmake run to 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_only policy
  • #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.ccache policy

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=simulator to improve apple simulator support
  • #2227: Improve cargo package with Cargo.toml file
  • Improve add_requires to support git commit as version
  • #622: Support remote compilation
  • #2282: Add add_filegroups to 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 --integrate to 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.library rule to build pybind modules
  • #1939: Add remove_files, remove_headerfiles and mark del_files as 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

  • #1875: Fix deploy android qt apk issue
  • #1973: Fix merge static archive

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.autoupdate rule
  • #1893: Improve to detect icc and ifort toolchains
  • #1905: Add support of external headers without experimental for msvc
  • #1904: Improve vs201x generator
  • Add XMAKE_THEME envirnoment variable to switch theme
  • #1907: Add -f/--force to force to create project in a non-empty directory
  • #1917: Improve to find_package and configurations

Bugs fixed

  • #1885: Fix package:fetch_linkdeps
  • #1903: Fix package link order

v2.6.1

New features

  • #1799: Support mixed rust & c++ target and cargo dependences
  • Add utils.glsl2spv rules 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 --menu not 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 -Gd for 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++latest and clatest for set_languages
  • #1720: Add save_scope and restore_scope to fix check_xxx apis
  • #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_allowedplats and set_allowedarchs
  • #1523: Add set_defaultmode, set_defaultplat and set_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 package to generate new local/remote packages
  • Add appletvos platform 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 shell and support load envs from add_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_package and add package:find_package for xmake package
  • Remove deprecated set_config_h and set_config_h_prefix apis
  • #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 shell to 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.bpf rule 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_importfiles rule to install *.pc import file
  • #1268: Add utils.install.cmake_importfiles rule to install *.cmake import files
  • #348: Add platform.longpaths policy to support git longpaths
  • #1314: Support to install and use conda packages
  • #1120: Add core.base.cpu module and improve os.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

  • #1266: Fix relative repo path in add_repositories
  • #1288: Fix vsxmake generator with option configs

v2.5.2

New features

  • #955: Support zig cc and zig 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_extsources to improve find external packages
  • #1241: Support add .manifest files for windows program
  • Support to use xrepo remove --all to 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_ok and add_defines_h apis for option

Bugs fixed

  • #1219: Fix version check and update
  • #1235: Fix include directories with spaces

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' and set_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.module rule 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_sysincludedirs for 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 edit and embed to set_symbols() only for msvc
  • #1062: Improve xmake project -k vs plugin.

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 c11 and c17 for 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

  • #951: Fix emcc support for windows
  • #992: Fix filelock bug

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=private to 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 xcode generator (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 envs to 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 show plugin 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

  • #786: Fix check header file deps
  • #810: Fix strip debug bug for linux

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 -v to 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/cmake pacakges
  • #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 *.c as 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 xmakefile generator
  • 620: Add global ~/.xmakerc.lua for all projects.
  • 593: Add core.base.socket module.

Change

  • #563: Separate build rules for specific language files from action/build
  • #570: Add qt.widgetapp and qt.quickapp rules
  • #576: Uses set_toolchain instead of add_tools and set_tools
  • Improve xmake create action
  • #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 require command 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 vsxmake plugin 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_cleanfiles api for target
  • #537: Add set_runenv api 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() and add_runenvs() api for target/run
  • #443: Add tab completion support
  • Add on_link, before_link and after_link for 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_static and widgetapp_qt_static
  • #415: Add --cu-cxx config arguments to nvcc/-ccbin
  • Add --ndk_stdcxx=y and --ndk_cxxstl=gnustl_static argument options for android NDK

Changes

  • Improve remote package manager
  • Improve target:on_xxx scripts to support to match android|armv7-a@macosx,linux|x86_64 pattern
  • 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.serialize and string.deserialize to serialize and deserialize object, function and others.
  • Add xmake g --menu
  • #283: Add target:installdir() and set_installdir() api for target
  • #260: Add add_platformdirs api, we can define custom platforms
  • #310: Add theme feature
  • #318: Add add_installfiles api to target
  • #339: Improve add_requires and find_package to 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 project plugin
  • #361: Support vs2019 preview
  • #368: Support private, public, interface to improve dependency inheritance like cmake
  • #284: Add passing user configs description for package()
  • #319: Add add_headerfiles to 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 dev on windows
  • #293: Add xmake f/g --mingw=xxx configuration option and improve to find_mingw
  • #301: Improve precompiled header file
  • #322: Add option.add_features, option.add_cxxsnippets and option.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_package and add builtin find_packages("zlib 1.x", "openssl", {xxx = ...}) api
  • Mark set_modes() as deprecated, we use add_rules("mode.debug", "mode.release") instead of it
  • #353: Improve target:set, target:add and add target:del to 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 exists add_rules("mode.release")
  • #289: Fix unarchive gzip file failed on windows
  • #296: Fix option.add_includedirs for 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_syslinks api to add system libraries dependence
  • Add xmake l time xmake [--rebuild] to record compilation time
  • #250: Add xmake f --vs_sdkver=10.0.15063.0 to change windows sdk version
  • Add lib.luajit.ffi and lib.luajit.jit extension 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 -D and --diagnosis instead 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, and is_config apis
  • Add set_config to set the default configuration
  • Add $xmake --try to 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_package to 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_tools and add_tools apis to change the toolchains for special target
  • Add builtin rules: mode.debug, mode.release, mode.profile and mode.check
  • Add is_mode, is_arch and is_plat builtin apis in the custom scripts
  • Add color256 codes
  • #160: Support Qt compilation environment and add qt.console, qt.application rules
  • 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.files and os.dirs api
  • #171: Improve build dependence for qt rule
  • Implement make clean for 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 improve add_files("src/*.md", {rule = "markdown"})
  • Add os.filesize() api
  • Add core.ui.xxx cui components
  • Add xmake f --menu to configure project with a menu configuration interface
  • Add set_values api to option()
  • 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 --cross error
  • Fix os.cd to the windows root path bug

v2.1.8

New features

  • Add XMAKE_LOGFILE environment 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 .gitignore file when creating new projects
  • Improve to create template project
  • Improve to detect toolchains on macosx without xcode
  • Improve set_config_header to support set_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_imports to bulk import modules for the target, option and package script
  • Add xmake -y/--yes to confirm the user input by default
  • Add xmake l package.manager.install xxx to 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_path and $ORIGIN for add_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=nocolor to disable color output
  • Remove and_bindings and add_rbindings api
  • Disable to output colors code to file
  • Update project templates with tbox
  • Improve lib.detect.find_program interface
  • Enable colors output for windows cmd
  • Add -w|--warning arguments to enable the warnings output

Bugs fixed

  • Fix set_pcxxheader bug
  • #140: Fix os.tmpdir() in fakeroot
  • #142: Fix os.getenv charset bug on windows
  • Fix compile error with spaces path
  • Fix setenv empty value bug

v2.1.6

Changes

  • Improve add_files to configure the compile option of the given files
  • Inherit links and linkdirs from the dependent targets and options
  • Improve target.add_deps and add inherit config, .e.g add_deps("test", {inherit = false})
  • Remove the binary files of tbox.pkg
  • Use /Zi instead of /ZI for msvc

Bugs fixed

  • Fix target deps
  • Fix target:add and option:add bug
  • Fix compilation and installation bug on archlinux

v2.1.5

New features

  • #83: Add add_csnippet and add_cxxsnippet into option for detecting some compiler features.
  • #83: Add user extension modules to detect program, libraries and files.
  • Add find_program, find_file, find_library, find_tool and find_package module interfaces.
  • Add net.* and devel.* extension modules
  • Add val() api to get the value of builtin-variable, .e.g val("host"), val("env PATH"), val("shell echo hello") and val("reg HKEY_LOCAL_MACHINE\\XX;Value")
  • Support to compile the microsoft resource file (.rc)
  • Add has_flags, features and has_features for detect module interfaces.
  • Add option.on_check, option.after_check and option.before_check api
  • Add target.on_load api
  • #132: Add add_frameworkdirs api
  • Add lib.detect.has_xxx and lib.detect.find_xxx apis.
  • Add add_moduledirs api
  • Add includes api instead of add_subdirs and add_subfiles
  • #133: Improve the project plugin to generate compile_commands.json by run xmake project -k compile_commands
  • Add set_pcheader and set_pcxxheader to support the precompiled header, support gcc, clang, msvc
  • Add xmake f -p cross platform and support the custom platform

Changes

  • #87: Add includes and links from target deps automatically
  • Improve import to load user extension and global modules
  • #93: Improve xmake lua to run a single line command
  • Improve to print gcc error and warning info
  • Improve print interface to dump table
  • #111: Add --root common option to allow run xmake command as root
  • #113: Privilege manage when running as root, store the root privilege and degrade.
  • Improve xxx_script in xmake.lua to support pattern match, .e.g on_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 *.asm source files for vs201x project plugin
  • Mark add_bindings and add_rbindings as deprecated
  • Optimize xmake rebuild speed on windows
  • Move core.project.task to core.base.task
  • Move echo and app2ipa plugins to xmake-plugins repo.
  • Add new api set_config_header("config.h", {prefix = ""}) instead of set_config_h and set_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_host api to get current host operating system
  • #79: Improve xmake lua to 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.lua in add_subdirs and use independent sub-scope to avoid dirty scope
  • #78: Get terminal size in runtime and soft-wrap the help printing
  • Avoid generate .xmake directory if be not in project

Bugs fixed

  • #67: Fix sudo make install permission problem
  • #70: Fix check android compiler error
  • Fix temporary file path conflict
  • Fix os.host and os.arch interfaces
  • Fix interpreter bug for loading root api
  • #77: fix cprint no color reset eol

v2.1.3

New features

  • #65: Add set_default api for target to modify default build and install behavior
  • Allows to run xmake command in project subdirectories, it will find the project root directory automatically
  • Add add_rpathdirs for target and option

Changes

  • #61: Provide safer xmake install and xmake uninstall task with administrator permission
  • Provide rpm, deb and osxpkg install 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.lua automatically

Bugs fixed

  • Fix error tips for checking xmake min version
  • #60: Fix self-build for macosx and windows
  • #64: Fix compile android armv8-a error
  • #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, --linkdirs and --includedirs configure arguments
  • Add app2ipa plugin
  • Add dictionary syntax style for xmake.lua
  • Provide smart scanning and building mode without xmake.lua
  • Add set_xmakever api for xmake.lua
  • Add add_frameworks api for objc and swift
  • Support multi-languages extension and add golang, dlang and rust language
  • Add optional target_end, option_end, task_end apis for scope
  • Add golang, dlang and rust project 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.mv and os.rm interfaces and support wildcard pattern
  • Optimize the output info and add -q|--quiet option
  • 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.iorun bug

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/packages for templates

Bugs fixed

  • Fix -def:xxx.def flags 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.g add_ldflags("$(shell pkg-config --libs sqlite3)")
  • Enable pdb symbol files for windows
  • Add debugger support on windows (vsjitdebugger, ollydbg, windbg ... )
  • Add getenv interface for the global scope of xmake.lua
  • Add plugin for generating vstudio project file (vs2002 - vs2015)
  • Add set_default api for option

Changes

  • Improve builtin-variable format
  • Support option for string type

Bugs fixed

  • Fix check ld failed without g++ on linux
  • Fix compile *.cxx files 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 import interface
  • 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/--jobs argument for supporting multi-jobs

Changes

  • Improve add_files api and support to add *.o/obj/a/lib files 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_runscript api 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