Releases: xmake-io/xmake
Releases · xmake-io/xmake
xmake 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
新特性
- #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
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
andqt.quickapp
rules - #576: Uses
set_toolchain
instead ofadd_tools
andset_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.widgetapp
和qt.quickapp
两个构建规则 - #576: 使用
set_toolchain
替代add_tools
和set_tools
,解决老接口使用歧义,提供更加易理解的设置方式 - 改进
xmake create
创建模板工程 - #589: 改进默认的构建任务数,充分利用cpu core来提速整体编译速度
- #598: 改进
find_package
支持在macOS上对.tbd系统库文件的查找 - #615: 支持安装和使用其他arch和ios的conan包
- #629: 改进hash.uuid并且实现uuid v4
- #639: 改进参数解析器支持
-jN
风格传参
Bugs修复
xmake 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
新特性
- 添加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
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_link
andafter_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_link
和after_link
阶段自定义脚本支持 - #190: 添加
add_rules("lex", "yacc")
规则去支持lex/yacc项目
改进
xmake 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
andwidgetapp_qt_static
- #415: Add
--cu-cxx
config arguments tonvcc/-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 matchandroid|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
andwidgetapp_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
New features
- Add
string.serialize
andstring.deserialize
to serialize and deserialize object, function and others. - Add
xmake g --menu
- #283: Add
target:installdir()
andset_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
andfind_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
andoption.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 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:add
and addtarget: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 existsadd_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.serialize
和string.deserialize
去序列化,反序列化对象,函数以及其他类型 - 添加
xmake g --menu
去图形化配置全局选项 - #283: 添加
target:installdir()
和set_installdir()
接口 - #260: 添加
add_platformdirs
接口,用户现在可以自定义扩展编译平台 - #310: 新增主题设置支持,用户可随意切换和扩展主题样式
- #318: 添加
add_installfiles
接口到target去自定义安装文件 - #339: 改进
add_requires
和find_package
使其支持对第三方包管理的集成支持 - #327: 实现对conan包管理的集成支持
- 添加内置API
find_packages("pcre2", "zlib")
去同时查找多个依赖包,不需要通过import导入即可直接调用 - #320: 添加模板配置文件相关接口,
add_configfiles
和set_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_cxxsnippets
和option.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修复
xmake 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
andlib.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.ffi
和lib.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
New features
- Support fasm assembler
- Add
has_config
,get_config
, andis_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_config
和is_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修复
xmake v2.2.1
New features
- #158: Support CUDA Toolkit and Compiler
- Add
set_tools
andadd_tools
apis to change the toolchains for special target - Add builtin rules:
mode.debug
,mode.release
,mode.profile
andmode.check
- Add
is_mode
,is_arch
andis_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
andos.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_tools
和add_tools
接口为指定target目标设置编译工具链 - 添加内建规则:
mode.debug
,mode.release
,mode.profile
和mode.check
- 添加
is_mode
,is_arch
和is_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.files
和os.dirs
接口,加速文件模式匹配 - #171: 改进Qt环境的构建依赖
- 在makefile生成插件中实现
make clean
Bugs修复
xmake 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.xxx
cui components - Add
xmake f --menu
to configure project with a menu configuration interface - Add
set_values
api 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 [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设置支持