Skip to content

Releases: xmake-io/xmake

xmake v2.3.1

23 Feb 12:21
f6155f8
Compare
Choose a tag to compare

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

新特性

  • #675: 支持通过设置强制将*.c作为c++代码编译, add_files("*.c", {sourcekind = "cxx"})
  • #681: 支持在msys/cygwin上编译xmake,以及添加msys/cygwin编译平台
  • 添加socket/pipe模块,并且支持在协程中同时调度process/socket/pipe
  • #192: 尝试构建带有第三方构建系统的项目,还支持autotools项目的交叉编译
  • 启用gcc/clang的编译错误色彩高亮输出
  • #588: 改进工程生成插件xmake project -k ninja,增加对build.ninja生成支持

改进

  • #665: 支持 *nix style 的参数输入,感谢@OpportunityLiu的贡献
  • #673: 改进tab命令补全,增加对参数values的补全支持
  • #680: 优化get.sh安装脚本,添加国内镜像源,加速下载
  • 改进process调度器
  • #651: 改进os/io模块系统操作错误提示

Bugs修复

  • 修复增量编译检测依赖文件的一些问题
  • 修复log输出导致xmake-vscode插件解析编译错误信息失败问题
  • #684: 修复windows下android ndk的一些linker错误

xmake v2.2.9

20 Dec 16:28
4c22b7a
Compare
Choose a tag to compare

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

新特性

  • #569: 增加对c++模块的实验性支持
  • 添加xmake project -k xmakefile生成器
  • 620: 添加全局~/.xmakerc.lua配置文件,对所有本地工程生效.
  • 593: 添加core.base.socket模块,为下一步远程编译和分布式编译做准备。

改进

  • #563: 重构构建逻辑,将特定语言的构建抽离到独立的rules中去
  • #570: 改进Qt构建,将qt.application拆分成qt.widgetappqt.quickapp两个构建规则
  • #576: 使用set_toolchain替代add_toolsset_tools,解决老接口使用歧义,提供更加易理解的设置方式
  • 改进xmake create创建模板工程
  • #589: 改进默认的构建任务数,充分利用cpu core来提速整体编译速度
  • #598: 改进find_package支持在macOS上对.tbd系统库文件的查找
  • #615: 支持安装和使用其他arch和ios的conan包
  • #629: 改进hash.uuid并且实现uuid v4
  • #639: 改进参数解析器支持-jN风格传参

Bugs修复

  • #567: 修复序列化对象时候出现的内存溢出问题
  • #566: 修复安装远程依赖的链接顺序问题
  • #565: 修复vcpkg包的运行PATH设置问题
  • #597: 修复xmake require安装包时间过长问题
  • #634: 修复mode.coverage构建规则,并且改进flags检测

xmake v2.2.8

26 Aug 14:40
6a2e390
Compare
Choose a tag to compare

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

新特性

  • 添加protobuf c/c++构建规则
  • #468: 添加对 Windows 的 UTF-8 支持
  • #472: 添加xmake project -k vsxmake去更好的支持vs工程的生成,内部直接调用xmake来编译
  • #487: 通过xmake --files="src/*.c"支持指定一批文件进行编译。
  • 针对io模块增加文件锁接口
  • #513: 增加对android/termux终端的支持,可在android设备上执行xmake来构建项目
  • #517: 为target增加add_cleanfiles接口,实现快速定制化清理文件
  • #537: 添加set_runenv接口去覆盖写入系统envs

改进

  • #257: 锁定当前正在构建的工程,避免其他xmake进程同时对其操作
  • 尝试采用/dev/shm作为os.tmpdir去改善构建过程中临时文件的读写效率
  • #542: 改进vs系列工具链的unicode输出问题
  • 对于安装的lua脚本,启用lua字节码存储,减少安装包大小(<2.4M),提高运行加载效率。

Bugs修复

  • #549: 修复新版vs2019下检测环境会卡死的问题

xmake v2.2.7

20 Jun 00:41
72bd93d
Compare
Choose a tag to compare

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

新特性

  • #455: 支持使用 clang 作为 cuda 编译器,xmake f --cu=clang
  • #440: 为target/run添加set_rundir()add_runenvs()接口设置
  • #443: 添加命令行tab自动完成支持
  • 为rule/target添加on_link,before_linkafter_link阶段自定义脚本支持
  • #190: 添加add_rules("lex", "yacc")规则去支持lex/yacc项目

改进

  • #430: 添加add_cucodegens()api为cuda改进设置codegen
  • #432: 针对cuda编译支持依赖分析检测(仅支持 CUDA 10.1+)
  • #437: 支持指定更新源,xmake update github:xmake-io/xmake#dev
  • #438: 支持仅更新脚本,xmake update --scriptonly dev
  • #433: 改进cuda构建支持device-link设备代码链接
  • #442: 改进tests测试框架

xmake v2.2.6

28 May 13:19
eb60a76
Compare
Choose a tag to compare

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

新特性

  • #380: 添加导出compile_flags.txt
  • #382: 简化域设置语法
  • #397: 添加clib包集成支持
  • #404: 增加Qt/Android编译支持,并且支持android apk生成和部署
  • 添加一些Qt空工程模板,例如:widgetapp_qt, quickapp_qt_static and widgetapp_qt_static
  • #415: 添加--cu-cxx配置参数到nvcc/-ccbin
  • 为Android NDK添加--ndk_stdcxx=y--ndk_cxxstl=gnustl_static参数选项

改进

  • 改进远程依赖包管理,丰富包仓库
  • 改进target:on_xxx自定义脚本,去支持匹配android|armv7-a@macosx,linux|x86_64模式
  • 改进loadfile,优化启动速度,windows上启动xmake时间提速98%

Bugs修复

  • #400: 修复qt项目c++语言标准设置无效问题

xmake v2.2.5

01 Apr 13:30
d71a016
Compare
Choose a tag to compare

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

新特性

  • 添加string.serializestring.deserialize去序列化,反序列化对象,函数以及其他类型
  • 添加xmake g --menu去图形化配置全局选项
  • #283: 添加target:installdir()set_installdir()接口
  • #260: 添加add_platformdirs接口,用户现在可以自定义扩展编译平台
  • #310: 新增主题设置支持,用户可随意切换和扩展主题样式
  • #318: 添加add_installfiles接口到target去自定义安装文件
  • #339: 改进add_requiresfind_package使其支持对第三方包管理的集成支持
  • #327: 实现对conan包管理的集成支持
  • 添加内置API find_packages("pcre2", "zlib")去同时查找多个依赖包,不需要通过import导入即可直接调用
  • #320: 添加模板配置文件相关接口,add_configfilesset_configvar
  • #179: 扩展xmake project插件,新增CMakelist.txt生成支持
  • #361: 增加对vs2019 preview的支持
  • #368: 支持private, public, interface属性设置去继承target配置
  • #284: 通过add_configs()添加和传递用户自定义配置到package()
  • #319: 添加add_headerfiles接口去改进头文件的设置
  • #342: 为includes()添加一些内置的辅助函数,例如:check_cfuncs

改进

  • 针对远程依赖包,改进版本和调试模式切换
  • #264: 支持在windows上更新dev/master版本,xmake update dev
  • #293: 添加xmake f/g --mingw=xxx 配置选线,并且改进find_mingw检测
  • #301: 改进编译预处理头文件以及依赖头文件生成,编译速度提升30%
  • #322: 添加option.add_features, option.add_cxxsnippetsoption.add_csnippets
  • 移除xmake 1.x的一些废弃接口, 例如:add_option_xxx
  • #327: 改进lib.detect.find_package增加对conan包管理器的支持
  • 改进lib.detect.find_package并且添加内建的find_packages("zlib 1.x", "openssl", {xxx = ...})接口
  • 标记set_modes()作为废弃接口, 我们使用add_rules("mode.debug", "mode.release")来替代它
  • #353: 改进target:set, target:add 并且添加target:del去动态修改target配置
  • #356: 添加qt_add_static_plugins()接口去支持静态Qt sdk
  • #351: 生成vs201x插件增加对yasm的支持
  • 重构改进整个远程依赖包管理器,更加快速、稳定、可靠,并提供更多的常用包

Bugs修复

  • 修复无法通过 set_optimize() 设置优化选项,如果存在add_rules("mode.release")的情况下
  • #289: 修复在windows下解压gzip文件失败
  • #296: 修复option.add_includedirs对cuda编译不生效
  • #321: 修复PATH环境改动后查找工具不对问题

xmake v2.2.3

28 Nov 14:19
Compare
Choose a tag to compare

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

新特性

  • #233: 对mingw平台增加windres的支持
  • #239: 添加cparser编译器支持
  • 添加插件管理器,xmake plugin --help
  • 添加add_syslinks接口去设置系统库依赖,分离与add_links添加的库依赖之间的链接顺序
  • 添加 xmake l time xmake [--rebuild] 去记录编译耗时
  • #250: 添加xmake f --vs_sdkver=10.0.15063.0去改变windows sdk版本
  • 添加lib.luajit.ffilib.luajit.jit扩展模块
  • #263: 添加object目标类型,仅仅用于编译生成object对象文件
  • #269: 每天第一次构建时候后台进程自动清理最近30天的临时文件

改进

  • #229: 改进vs toolset选择已经vcproj工程文件生成
  • 改进编译依赖,对源文件列表的改动进行依赖判断
  • 支持解压*.xz文件
  • #249: 改进编译进度信息显示格式
  • #247: 添加-D--diagnosis去替换--backtrace,改进诊断信息显示
  • #259: 改进 on_build, on_build_file 和 on_xxx 等接口
  • 改进远程包管理器,更加方便的包依赖配置切换
  • 支持only头文件依赖包的安装
  • 支持对包内置links的手动调整,add_packages("xxx", {links = {}})

Bugs修复

  • 修复安装依赖包失败中断后的状态不一致性问题

xmake v2.2.2

16 Oct 13:21
Compare
Choose a tag to compare

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

新特性

  • 新增fasm汇编器支持
  • 添加has_config, get_configis_config接口去快速判断option和配置值
  • 添加set_config接口去设置默认配置
  • 添加$xmake --try去尝试构建工程
  • 添加set_enabled(false)去显示的禁用target
  • #69: 添加远程依赖包管理, add_requires("tbox ~1.6.1")
  • #216: 添加windows mfc编译规则

改进

  • 改进Qt编译编译环境探测,增加对mingw sdk的支持
  • 在自动扫描生成的xmake.lua中增加默认debug/release规则
  • #178: 修改mingw平台下的目标名
  • 对于add_files()在windows上支持大小写不敏感路径模式匹配
  • 改进detect.sdks.find_qt对于Qt根目录的探测
  • #184: 改进lib.detect.find_package支持vcpkg
  • #208: 改进rpath对动态库的支持
  • #225: 改进vs环境探测

Bugs修复

  • #177: 修复被依赖的动态库target,如果设置了basename后链接失败问题
  • 修复$ xmake f --menu中Exit问题以及cpu过高问题
  • #197: 修复生成的vs201x工程文件带有中文路径乱码问题
  • 修复WDK规则编译生成的驱动在Win7下运行蓝屏问题
  • #205: 修复vcproj工程生成targetdir, objectdir路径设置不匹配问题

xmake v2.2.1

16 Jun 14:08
Compare
Choose a tag to compare

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

新特性

  • #158: 增加对Cuda编译环境的支持
  • 添加set_toolsadd_tools接口为指定target目标设置编译工具链
  • 添加内建规则:mode.debug, mode.release, mode.profilemode.check
  • 添加is_mode, is_archis_plat内置接口到自定义脚本域
  • 添加color256代码
  • #160: 增加对Qt SDK编译环境的跨平台支持,并且增加qt.console, qt.application等规则
  • 添加一些Qt工程模板
  • #169: 支持yasm汇编器
  • #159: 增加对WDK驱动编译环境支持

改进

  • 添加FAQ到自动生成的xmake.lua文件,方便用户快速上手
  • 支持Android NDK >= r14的版本
  • 改进swiftc对warning flags的支持
  • #167: 改进自定义规则:rule()
  • 改进os.filesos.dirs接口,加速文件模式匹配
  • #171: 改进Qt环境的构建依赖
  • 在makefile生成插件中实现make clean

Bugs修复

  • 修复无法通过add_ldflags("xx", "xx", {force = true})强制设置多个flags的问题
  • #157: 修复pdb符号输出目录不存在情况下编译失败问题
  • 修复对macho格式目标strip all符号失效问题
  • #168: 修复生成vs201x工程插件,在x64下失败的问题

xmake v2.1.9

03 Feb 12:45
Compare
Choose a tag to compare

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 [email protected]
  • #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

新特性

  • 添加del_files()接口去从已添加的文件列表中移除一些文件
  • 添加rule(), add_rules()接口实现自定义构建规则,并且改进add_files("src/*.md", {rule = "markdown"})
  • 添加os.filesize()接口
  • 添加core.ui.xxx等cui组件模块,实现终端可视化界面,用于实现跟用户进行短暂的交互
  • 通过xmake f --menu实现可视化菜单交互配置,简化工程的编译配置
  • 添加set_values接口到option
  • 改进option,支持根据工程中用户自定义的option,自动生成可视化配置菜单
  • 在调用api设置工程配置时以及在配置菜单中添加源文件位置信息

改进

  • 改进交叉工具链配置,通过指定工具别名定向到已知的工具链来支持未知编译工具名配置, 例如: xmake f [email protected]
  • #151: 改进mingw平台下动态库生成
  • 改进生成makefile插件
  • 改进检测错误提示
  • 改进add_cxflags等flags api的设置,添加force参数,来禁用自动检测和映射,强制设置选项:add_cxflags("-DTEST", {force = true})
  • 改进add_files的flags设置,添加force域,用于设置不带自动检测和映射的原始flags:add_files("src/*.c", {force = {cxflags = "-DTEST"}})
  • 改进搜索工程根目录策略
  • 改进vs环境探测,支持加密文件系统下vs环境的探测
  • 升级luajit到最新2.1.0-beta3
  • 增加对linux/arm, arm64的支持,可以在arm linux上运行xmake
  • 改进vs201x工程生成插件,更好的includedirs设置支持

Bugs修复

  • 修复依赖修改编译和链接问题
  • #151: 修复os.nuldev()在mingw上传入gcc时出现问题
  • #150: 修复windows下ar.exe打包过长obj列表参数,导致失败问题
  • 修复xmake f --cross无法配置问题
  • 修复os.cd到windows根路径问题

video