Skip to content

Releases: xmake-io/xmake

xmake v2.1.8

07 Nov 13:28
Compare
Choose a tag to compare

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

新特性

  • 添加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

13 Oct 09:54
Compare
Choose a tag to compare

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

新特性

  • 添加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_rbindingsadd_bindings接口
  • 禁止在重定向的时候进行彩色输出,避免输出文件中带有色彩代码干扰
  • 更新tbox工程模板
  • 改进lib.detect.find_program模块接口
  • 为windows cmd终端增加彩色输出
  • 增加-w|--warning参数来启用实时警告输出

Bugs修复

  • 修复set_pcxxheader编译没有继承flags配置问题
  • #140: 修复os.tmpdir()在fakeroot下的冲突问题
  • #142: 修复os.getenv 在windows上的中文编码问题
  • 修复在带有空格路径的情况下,编译错误问题
  • 修复setenv空值的崩溃问题

xmake v2.1.6

16 Aug 14:17
Compare
Choose a tag to compare

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

改进

  • 改进add_files,支持对files粒度进行编译选项的各种配置,更加灵活。
  • 从依赖的target和option中继承links和linkdirs。
  • 改进target.add_deps接口,添加继承配置,允许手动禁止依赖继承,例如:add_deps("test", {inherit = false})
  • 移除tbox.pkg二进制依赖,直接集成tbox源码进行编译

Bugs修复

  • 修复目标级联依赖问题
  • 修复target:addoption:add问题
  • 修复在archlinux上的编译和安装问题
  • 修复/ZI的兼容性问题,用/Zi替代

xmake v2.1.5

05 Aug 15:09
Compare
Choose a tag to compare

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_rbi�ndings 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()

新特性

  • #83: 添加 add_csnippetadd_cxxsnippetoption来检测一些编译器特性
  • #83: 添加用户扩展模块去探测程序,库文件以及其他主机环境
  • 添加find_program, find_file, find_library, find_toolfind_package 等模块接口
  • 添加net.*devel.*扩展模块
  • 添加val()接口去获取内置变量,例如:val("host"), val("env PATH"), val("shell echo hello") and val("reg HKEY_LOCAL_MACHINE\\XX;Value")
  • 增加对微软.rc资源文件的编译支持,当在windows上编译时,可以增加资源文件了
  • 增加has_flags, featureshas_features等探测模块接口
  • 添加option.on_check, option.after_checkoption.before_check 接口
  • 添加target.on_load接口
  • #132: 添加add_frameworkdirs接口
  • 添加lib.detect.has_xxxlib.detect.find_xxx接口
  • 添加add_moduledirs接口在工程中定义和加载扩展模块
  • 添加includes接口替换add_subdirsadd_subfiles
  • #133: 改进工程插件,通过运行xmake project -k compile_commands来导出compile_commands.json
  • 添加set_pcheaderset_pcxxheader去支持跨编译器预编译头文件,支持gcc, clangmsvc
  • 添加xmake f -p cross平台用于交叉编译,并且支持自定义平台名

改进

  • #87: 为依赖库目标自动添加:includeslinks
  • 改进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_bindingsadd_rbindings为废弃接口
  • 优化xmake rebuild在windows上的构建速度
  • core.project.task模块迁移至core.base.task
  • echoapp2ipa 插件迁移到 xmake-plugins 仓库
  • 添加set_config_header("config.h", {prefix = ""}) 代替 set_config_hset_config_h_prefix

Bugs修复

  • 修复try-catch-finally
  • 修复解释器bug,解决当加载多级子目录时,根域属性设置不对
  • #115: 修复安装脚本get.sh的路径问题
  • 修复import()导入接口的缓存问题

xmake v2.1.4

10 May 00:53
Compare
Choose a tag to compare

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

新特性

  • #68: 增加$(programdir)$(xmake)内建变量
  • 添加is_host接口去判断当前的主机环境
  • #79: 增强xmake lua,支持交互式解释执行

改进

  • 修改菜单选项颜色
  • #71: 针对widows编译器改进优化选项映射
  • #73: 尝试获取可执行文件路径来作为xmake的脚本目录
  • add_subdirs中的子xmake.lua中,使用独立子作用域,避免作用域污染导致的干扰问题
  • #78: 美化非全屏终端窗口下的xmake --help输出
  • 避免产生不必要的.xmake目录,如果不在工程中的时候

Bugs修复

  • #67: 修复 sudo make install 命令权限问题
  • #70: 修复检测android编译器错误
  • 修复临时文件路径冲突问题
  • 修复os.host, os.arch等接口
  • 修复根域api加载干扰其他子作用域问题
  • #77: 修复cprint色彩打印中断问题

xmake v2.1.3

02 Apr 09:23
Compare
Choose a tag to compare

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

新特性

  • #65: 为target添加set_default接口用于修改默认的构建所有targets行为
  • 允许在工程子目录执行xmake命令进行构建,xmake会自动检测所在的工程根目录
  • 添加add_rpathdirs api到target和option,支持动态库的自动加载运行

改进

  • #61: 提供更加安全的xmake install and xmake uninstall任务,更友好的处理root安装问题
  • 提供rpm, debosxpkg安装包
  • #63: 改进安装脚本,实现更加安全的构建和安装xmake
  • #61: 禁止在root权限下运行xmake命令,增强安全性
  • 改进工具链检测,通过延迟延迟检测提升整体检测效率
  • 当自动扫面生成xmake.lua时,添加更友好的用户提示,避免用户无操作

Bugs修复

  • 修复版本检测的错误提示信息
  • #60: 修复macosx和windows平台的xmake自举编译
  • #64: 修复构建android armv8-a架构失败问题
  • #50: 修复构建android可执行程序,无法运行问题

xmake v2.1.2

23 Mar 14:45
Compare
Choose a tag to compare

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

04 Mar 04:37
Compare
Choose a tag to compare

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

新特性

  • 添加--links, --linkdirs and --includedirs 配置参数
  • 添加app2ipa插件
  • xmake.lua工程描述增加dictionay语法风格
  • 提供智能扫描编译模式,在无任何xmake.lua等工程描述文件的情况下,也能直接快速编译
  • xmake.lua工程描述添加set_xmakever接口,更加友好的处理版本兼容性问题
  • objcswift程序添加add_frameworks接口
  • 更加快速方便的多语言扩展支持,增加golang, dlangrust程序构建的支持
  • 添加target_end, option_endtask_end等可选api,用于显示结束描述域,进入根域设置,提高可读性
  • 添加golang, dlangrust工程模板

改进

  • 工程生成插件支持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.mvos.rm 等接口,支持通配符模式匹配和批量文件操作
  • 精简和优化构建输出信息,添加-q|--quiet选项实现静默构建
  • 改进makefile生成插件,抽取编译工具和编译选项到全局变量

Bugs修复

  • #41: 修复在windows下自动检测x64失败问题
  • #43: 避免创建不必要的.xmake工程缓存目录
  • 针对android版本添加c++ stl搜索目录,解决编译c++失败问题
  • 修复在rhel 5.10上编译失败问题
  • 修复os.iorun返回数据不对问题

xmake v2.0.5

28 Oct 03:44
Compare
Choose a tag to compare

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

29 Aug 13:32
Compare
Choose a tag to compare

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

新特性

  • 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编译失败问题