xmake v2.5.6 发布,改进预编译二进制镜像包兼容性

栏目: 软件资讯 · 发布时间: 4年前

内容简介:xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的...

xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。

这是一个稳定性修复版本,主要修复和改进了一些跟预编译二进制包相关的兼容性问题。另外新增了一些实用的接口来设置默认的编译平台、架构和模式,以及允许的编译平台、架构列表等等。

新特性介绍

windows 预编译包的兼容性修复

上个版本对 Windows 下的 预编译包安装做了初步的支持,但是由于没有考虑 toolset 版本的兼容性问题,因此如果用户的 vs 版本过低,就会在集成包时候出现链接问题。

根据 ms 的官方描述,其实 msvc 的二进制库对于 toolset 的版本是向下兼容的。https://docs.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017?view=msvc-160

You can mix binaries built by different versions of the v140, v141, and v142 toolsets. However, you must link by using a toolset at least as recent as the most recent binary in your app. Here’s an example: you can link an app compiled using any 2017 toolset (v141, versions 15.0 through 15.9) to a static library compiled using, say, Visual Studio 2019 version 16.2 (v142), if they’re linked using a version 16.2 or later toolset. You can link a version 16.2 library to a version 16.4 app as long as you use a 16.4 or later toolset.

也就是说,云端采用 v141 编译的库,用户的 msvc toolset 只要是 >=141 就可以兼容支持。

因此,我们改进了云端的预编译逻辑,针对 vs2015/14.16 和 vs2019/14.29 两个 工具 集分别进行预编译,然后 xmake 会根据用户 msvc 的 toolset 版本,优先选取最优的兼容版本库下载集成。

set_defaultplat

设置默认的编译平台

v2.5.6 以上版本才支持,用于设置工程默认的编译平台,如果没有设置,默认平台跟随当前系统平台,也就是 os.host()。

比如,在 macOS 上默认编译平台是 macosx,如果当前项目是 ios 项目,那么可以设置默认编译平台为 iphoneos。

set_defaultplat("iphoneos")

它等价于,xmake f -p iphoneos

set_defaultarch

设置默认的编译架构

v2.5.6 以上版本才支持,用于设置工程默认的编译架构,如果没有设置,默认平台跟随当前系统架构,也就是 os.arch()。

set_defaultplat("iphoneos")
set_defaultarch("arm64")

它等价于,xmake f -p iphoneos -a arm64

我们也可以设置多个平台下的默认架构。

set_defaultarch("iphoneos|arm64", "windows|x64")

在 iphoneos 上默认编译 arm64 架构,在 windows 上默认编译 x64 架构。

set_defaultmode

设置默认的编译模式

v2.5.6 以上版本才支持,用于设置工程默认的编译模式,如果没有设置,默认是 release 模式编译。

set_defaultmode("releasedbg")

它等价于,xmake f -m releasedbg

set_allowedplats

设置允许编译的平台列表

v2.5.6 以上版本才支持,用于设置工程支持的编译平台列表,如果用户指定了其他平台,会提示错误,这通常用于限制用户指定错误的无效平台。

如果没有设置,那么没有任何平台限制。

set_allowedplats("windows", "mingw")

设置当前项目仅仅支持 windows 和 mingw 平台。

set_allowedarchs

设置允许编译的平台架构

v2.5.6 以上版本才支持,用于设置工程支持的编译架构列表,如果用户指定了其他架构,会提示错误,这通常用于限制用户指定错误的无效架构。

如果没有设置,那么没有任何架构限制。

set_allowedarchs("x64", "x86")

当前项目,仅仅支持 x64/x86 平台。

我们也可以同时指定多个平台下允许的架构列表。

set_allowedarchs("windows|x64", "iphoneos|arm64")

设置当前项目在 windows 上仅仅支持 x64 架构,并且在 iphoneos 上仅仅支持 arm64 架构。

set_allowedmodes

设置允许的编译模式列表

v2.5.6 以上版本才支持,用于设置工程支持的编译模式列表,如果用户指定了其他模式,会提示错误,这通常用于限制用户指定错误的无效模式。

如果没有设置,那么没有任何模式限制。

set_allowedmodes("release", "releasedbg")

设置当前项目仅仅支持 release/releasedbg 两个编译模式。

更新内容

新特性

  • #1483: 添加 os.joinenvs() 和改进包工具环境
  • #1523: 添加 set_allowedmodesset_allowedplats 和 set_allowedarchs
  • #1523: 添加 set_defaultmodeset_defaultplat 和 set_defaultarch

改进

  • 改进 vs/vsxmake 工程插件支持 vs2022
  • #1513: 改进 windows 预编译包的兼容性问题
  • 改进 vcpkg 包在 windows 上的查找
  • 改进对 Qt6 的支持

Bugs 修复

  • #489: 修复 run os.execv 带有过长环境变量值出现的一些问题

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Tagging

Tagging

Gene Smith / New Riders / 2007-12-27 / GBP 28.99

Tagging is fast becoming one of the primary ways people organize and manage digital information. Tagging complements traditional organizational tools like folders and search on users desktops as well ......一起来看看 《Tagging》 这本书的介绍吧!

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具