Releases: xmake-io/xmake
Releases · xmake-io/xmake
xmake 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 supportset_config_header("config", {version = "2.1.8", build = "%Y%m%d%H%M"})
Bugs fixed
- #145: Fix the current directory when running target
新特性
- 添加
XMAKE_LOGFILE
环境变量,启用输出到日志文件 - 添加对tinyc编译器的支持
改进
- 改进对IDE和编辑器插件的集成支持,例如:Visual Studio Code, Sublime Text 以及 IntelliJ IDEA
- 当生成新工程的时候,自动生成一个
.gitignore
文件,忽略一些xmake的临时文件和目录 - 改进创建模板工程,使用模板名代替模板id作为参数
- 改进macOS编译平台的探测,如果没有安装xcode也能够进行编译构建,如果有编译器的话
- 改进
set_config_header
接口,支持局部版本号设置,优先于全局set_version
,例如:set_config_header("config", {version = "2.1.8", build = "%Y%m%d%H%M"})
Bugs修复
- #145: 修复运行target的当前目录环境
xmake 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
foradd_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
andadd_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
新特性
- 添加
add_imports
去为target,option和package的自定义脚本批量导入模块,简化自定义脚本 - 添加
xmake -y/--yes
去确认用户输入 - 添加
xmake l package.manager.install xxx
模块,进行跨平台一致性安装软件包 - 添加vscode编辑器插件支持,更加方便的使用xmake,xmake-vscode
- 添加
xmake macro ..
快速运行最近一次命令
改进
- 改进
cprint()
,支持24位真彩色输出 - 对
add_rpathdirs()
增加对@loader_path
和$ORIGIN
的内置变量支持,提供可迁移动态库加载 - 改进
set_version("x.x.x", {build = "%Y%m%d%H%M"})
支持buildversion设置 - 移除docs目录,将其放置到独立xmake-docs仓库中,减少xmake.zip的大小,优化下载安装的效率
- 改进安装和卸载脚本,支持DESTDIR和PREFIX环境变量设置
- 通过缓存优化flags探测,加速编译效率
- 添加
COLORTERM=nocolor
环境变量开关,禁用彩色输出 - 移除
add_rbindings
和add_bindings
接口 - 禁止在重定向的时候进行彩色输出,避免输出文件中带有色彩代码干扰
- 更新tbox工程模板
- 改进
lib.detect.find_program
模块接口 - 为windows cmd终端增加彩色输出
- 增加
-w|--warning
参数来启用实时警告输出
Bugs修复
xmake 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.gadd_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
andoption:add
bug - Fix compilation and installation bug on archlinux
改进
- 改进
add_files
,支持对files粒度进行编译选项的各种配置,更加灵活。 - 从依赖的target和option中继承links和linkdirs。
- 改进
target.add_deps
接口,添加继承配置,允许手动禁止依赖继承,例如:add_deps("test", {inherit = false})
- 移除
tbox.pkg
二进制依赖,直接集成tbox源码进行编译
Bugs修复
- 修复目标级联依赖问题
- 修复
target:add
和option:add
问题 - 修复在archlinux上的编译和安装问题
- 修复
/ZI
的兼容性问题,用/Zi
替代
xmake v2.1.5
New features
- #83: Add
add_csnippet
andadd_cxxsnippet
intooption
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
andfind_package
module interfaces. - Add
net.*
anddevel.*
extension modules - Add
val()
api to get the value of builtin-variable, .e.gval("host")
,val("env PATH")
,val("shell echo hello")
andval("reg HKEY_LOCAL_MACHINE\\XX;Value")
- Support to compile the microsoft resource file (.rc)
- Add
has_flags
,features
andhas_features
for detect module interfaces. - Add
option.on_check
,option.after_check
andoption.before_check
api - Add
target.on_load
api - #132: Add
add_frameworkdirs
api - Add
lib.detect.has_xxx
andlib.detect.find_xxx
apis. - Add
add_moduledirs
api - Add
includes
api instead ofadd_subdirs
andadd_subfiles
- #133: Improve the project plugin to generate
compile_commands.json
by runxmake project -k compile_commands
- Add
set_pcheader
andset_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
inxmake.lua
to support pattern match, .e.gon_build("iphoneos|arm*", function (target) end)
- improve builtin-variables to support to get the value envirnoment and registry
- Improve to detect vstudio sdk and cross toolchains envirnoment
- #71: Improve to detect compiler and linker from env vars
- Improve the option detection (cache and multi-jobs) and increase 70% speed
- #129: Check link deps and cache the target file
- Support
*.asm
source files for vs201x project plugin - Mark
add_bindings
andadd_rbi�ndings
as deprecated - Optimize
xmake rebuild
speed on windows - Move
core.project.task
tocore.base.task
- Move
echo
andapp2ipa
plugins to xmake-plugins repo. - Add new api
set_config_header("config.h", {prefix = ""})
instead ofset_config_h
andset_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()
新特性
- #83: 添加
add_csnippet
,add_cxxsnippet
到option
来检测一些编译器特性 - #83: 添加用户扩展模块去探测程序,库文件以及其他主机环境
- 添加
find_program
,find_file
,find_library
,find_tool
和find_package
等模块接口 - 添加
net.*
和devel.*
扩展模块 - 添加
val()
接口去获取内置变量,例如:val("host")
,val("env PATH")
,val("shell echo hello")
andval("reg HKEY_LOCAL_MACHINE\\XX;Value")
- 增加对微软.rc资源文件的编译支持,当在windows上编译时,可以增加资源文件了
- 增加
has_flags
,features
和has_features
等探测模块接口 - 添加
option.on_check
,option.after_check
和option.before_check
接口 - 添加
target.on_load
接口 - #132: 添加
add_frameworkdirs
接口 - 添加
lib.detect.has_xxx
和lib.detect.find_xxx
接口 - 添加
add_moduledirs
接口在工程中定义和加载扩展模块 - 添加
includes
接口替换add_subdirs
和add_subfiles
- #133: 改进工程插件,通过运行
xmake project -k compile_commands
来导出compile_commands.json
- 添加
set_pcheader
和set_pcxxheader
去支持跨编译器预编译头文件,支持gcc
,clang
和msvc
- 添加
xmake f -p cross
平台用于交叉编译,并且支持自定义平台名
改进
- #87: 为依赖库目标自动添加:
includes
和links
- 改进
import
接口,去加载用户扩展模块 - #93: 改进
xmake lua
,支持运行单行命令和模块 - 改进编译错误提示信息输出
- 改进
print
接口去更好些显示table数据 - #111: 添加
--root
通用选项去临时支持作为root运行 - #113: 改进权限管理,现在作为root运行也是非常安全的
- 改进
xxx_script
工程描述api,支持多平台模式选择, 例如:on_build("iphoneos|arm*", function (target) end)
- 改进内置变量,支持环境变量和注册表数据的获取
- 改进vstudio环境和交叉工具链的探测
- #71: 改进从环境变量中探测链接器和编译器
- 改进option选项检测,通过多任务检测,提升70%的检测速度
- #129: 检测链接依赖,如果源文件没有改变,就不必重新链接目标文件了
- 在vs201x工程插件中增加对
*.asm
文件的支持 - 标记
add_bindings
和add_rbindings
为废弃接口 - 优化
xmake rebuild
在windows上的构建速度 - 将
core.project.task
模块迁移至core.base.task
- 将
echo
和app2ipa
插件迁移到 xmake-plugins 仓库 - 添加
set_config_header("config.h", {prefix = ""})
代替set_config_h
和set_config_h_prefix
Bugs修复
- 修复
try-catch-finally
- 修复解释器bug,解决当加载多级子目录时,根域属性设置不对
- #115: 修复安装脚本
get.sh
的路径问题 - 修复
import()
导入接口的缓存问题
xmake 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
inadd_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
andos.arch
interfaces - Fix interpreter bug for loading root api
- #77: fix
cprint
no color reset eol
新特性
改进
- 修改菜单选项颜色
- #71: 针对widows编译器改进优化选项映射
- #73: 尝试获取可执行文件路径来作为xmake的脚本目录
- 在
add_subdirs
中的子xmake.lua
中,使用独立子作用域,避免作用域污染导致的干扰问题 - #78: 美化非全屏终端窗口下的
xmake --help
输出 - 避免产生不必要的
.xmake
目录,如果不在工程中的时候
Bugs修复
xmake 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
andxmake uninstall
task with administrator permission - Provide
rpm
,deb
andosxpkg
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
新特性
- #65: 为target添加
set_default
接口用于修改默认的构建所有targets行为 - 允许在工程子目录执行
xmake
命令进行构建,xmake会自动检测所在的工程根目录 - 添加
add_rpathdirs
api到target和option,支持动态库的自动加载运行
改进
- #61: 提供更加安全的
xmake install
andxmake uninstall
任务,更友好的处理root安装问题 - 提供
rpm
,deb
和osxpkg
安装包 - #63: 改进安装脚本,实现更加安全的构建和安装xmake
- #61: 禁止在root权限下运行xmake命令,增强安全性
- 改进工具链检测,通过延迟延迟检测提升整体检测效率
- 当自动扫面生成
xmake.lua
时,添加更友好的用户提示,避免用户无操作
Bugs修复
xmake 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
新特性
- 添加aur打包脚本,并支持用
yaourt
包管理器进行安装。 - 添加set_basename接口,便于定制化修改生成后的目标文件名
改进
- 支持vs2017编译环境
- 支持编译android版本的rust程序
- 增强vs201x工程生成插件,支持同时多模式、架构编译
Bugs修复
- 修复编译android程序,找不到系统头文件问题
- 修复检测选项行为不正确问题
- #57: 修复代码文件权限到0644
xmake 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 forxmake.lua
- Add
add_frameworks
api forobjc
andswift
- Support multi-languages extension and add
golang
,dlang
andrust
language - Add optional
target_end
,option_end
,task_end
apis for scope - Add
golang
,dlang
andrust
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
andos.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
新特性
- 添加
--links
,--linkdirs
and--includedirs
配置参数 - 添加app2ipa插件
- 为
xmake.lua
工程描述增加dictionay语法风格 - 提供智能扫描编译模式,在无任何
xmake.lua
等工程描述文件的情况下,也能直接快速编译 - 为
xmake.lua
工程描述添加set_xmakever
接口,更加友好的处理版本兼容性问题 - 为
objc
和swift
程序添加add_frameworks
接口 - 更加快速方便的多语言扩展支持,增加
golang
,dlang
和rust
程序构建的支持 - 添加
target_end
,option_end
和task_end
等可选api,用于显示结束描述域,进入根域设置,提高可读性 - 添加
golang
,dlang
和rust
工程模板
改进
- 工程生成插件支持vs2017
- 改进gcc/clang编译器警告和错误提示
- 重构代码架构,改进多语言支持,更加方便灵活的扩展语言支持
- 改进print接口,同时支持原生lua print以及格式化打印
- 如果xmake.lua不存在,自动扫描工程代码文件,并且生成xmake.lua进行编译
- 修改license,使用更加宽松的Apache License 2.0
- 移除一些二进制工具文件
- 移除install.bat脚本,提供windows nsis安装包支持
- 使用docute重写文档,提供更加完善的文档支持
- 增强
os.run
,os.exec
,os.cp
,os.mv
和os.rm
等接口,支持通配符模式匹配和批量文件操作 - 精简和优化构建输出信息,添加
-q|--quiet
选项实现静默构建 - 改进
makefile
生成插件,抽取编译工具和编译选项到全局变量
Bugs修复
xmake 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
新特性
- 为解释器作用域增加一些内建模块支持
- 针对windows x64平台,支持ml64汇编器
改进
- 增强ipairs和pairs接口,支持过滤器模式,简化脚本代码
- 为vs201x工程生成增加文件filter
- 移除
core/tools
目录以及msys工具链,在windows上使用xmake自编译core源码进行安装,优化xmake源码磁盘空间 - 移除
xmake/packages
,默认模板安装不再内置二进制packages,暂时需要手动放置,以后再做成自动包依赖下载编译
Bugs修复
- 修复msvc的编译选项不支持问题:
-def:xxx.def
- 修复ml.exe汇编器脚本
- 修复选项链接顺序问题
xmake v2.0.4
New features
- Add native shell support for
xmake.lua
. .e.gadd_ldflags("$(shell pkg-config --libs sqlite3)")
- Enable pdb symbol files for windows
- Add debugger support on windows (vsjitdebugger, ollydbg, windbg ... )
- Add
getenv
interface for the global scope ofxmake.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
新特性
- 在
xmake.lua
中添加原生shell支持,例如:add_ldflags("$(shell pkg-config --libs sqlite3)")
- 编译windows目标程序,默认默认启用pdb符号文件
- 在windows上添加调试器支持(vsjitdebugger, ollydbg, windbg ... )
- 添加
getenv
接口到xmake.lua
的全局作用域中 - 添加生成vstudio工程插件(支持:vs2002 - vs2015)
- 为option添加
set_default
接口
改进
- 增强内建变量的处理
- 支持字符串类型的选项option设置
Bugs修复
- 修复在linux下检测ld连接器失败,如果没装g++的话
- 修复
*.cxx
编译失败问题