xmake v2.2.3 发布, 大量新特性支持

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

内容简介:此版本主要是对远程依赖包管理进行了一些改进,并且新增了很多小特性,并且此版本已经可以支持通过xmake update来自我更新升级了,以后升级xmake将会更加方便。 关于新特性的详细说明见文章下文。 项目源码 官方文...

此版本主要是对远程依赖包管理进行了一些改进,并且新增了很多小特性,并且此版本已经可以支持通过xmake update来自我更新升级了,以后升级xmake将会更加方便。

关于新特性的详细说明见文章下文。

更新内容

新特性

  • #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天的临时文件

  • 增加xmake update命令实现自我更新

改进

  • #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 update

也可以指定分支,升级更新到master/dev版本:

$ xmake update dev
$ xmake update master

新增插件管理器

用于拉取通过xmake-plugins官方插件仓库维护的扩展插件,更新集成到本地:

$ xmake plugin --install

执行上面的命令,就会安装所有扩展插件。

添加系统链接库

新增add_syslinks设置接口,此接口使用上跟add_links类似,唯一的区别就是,通过这个接口添加的链接库顺序在所有add_links之后。

因此主要用于添加系统库依赖,因为系统库的链接顺序是非常靠后的,例如:

add_syslinks("pthread", "m", "dl")
target("demo")
    add_links("a", "b")
    add_linkdirs("$(buildir)/lib")

上面的配置,即使add_syslinks被优先提前设置了,但最后的链接顺序依然是:-la -lb -lpthread -lm -ldl

hook内置的文件编译过程

target里面新增了三个接口,用户hook每个文件编译过程:

target("test")

    set_kind("binary")
    add_files("src/*.c")

    before_build_file(function (target, sourcefile, opt)
    end)

    on_build_file(function (target, sourcefile, opt)
        opt.origin(target, sourcefile, opt)
    end)

    after_build_file(function (target, sourcefile, opt)
    end)

其中opt.origin保存的是on_build_file的内建build脚本,如果还想使用内建的构建行为,可以继续调用它执行源文件编译。

新增vs toolset和winsdk ver的快速切换

如果我们要在vs2017下支持编译xp兼容程序,可以这么设置:

target("test")
    set_kind("binary")
    add_files("src/*.c") 

    -- compatible with xp
    add_defines("_USING_V140_SDK71_")
    add_ldflags("/SUBSYSTEM:CONSOLE,5.01")

然后执行:

$ xmake f --vs_toolset=14.0
$ xmake

我们也可以指定winsdk版本:

$ xmake f --vs_sdkver=10.0.15063.0 -c
$ xmake project -k vs2015

改进的依赖包设置

add_packages现在可以支持覆写内置的links,控制实际链接的库:

-- 默认会有 ncurses, panel, form等links
add_requires("ncurses") 

target("test")
    
    -- 显示指定,只使用ncurses一个链接库
    add_packages("ncurses", {links = "ncurses"})

或者干脆禁用links,只使用头文件:

add_requires("lua")
target("test")
    add_packages("lua", {links = {}})

并且我们也新增了group参数到add_requires,来分组依赖包,同一个组下的所有依赖包,只能有一个生效启用,启用顺序依赖add_requires添加的顺序:

add_requires("openssl", {group = "ssl", optional = true})
add_requires("mbedtls", {group = "ssl", optional = true})

target("test")
    add_packages("openssl", "mbedtls")

例如上面,所以同时依赖两个ssl包,实际上只会启用生效实际安装成功的那一个ssl包,并不会同时链接两个依赖包。

我们还新增了on_load参数,在依赖包加载成功后,会被调用,提供用户一个机会去设置一些其他的flags,例如:

add_requires("tbox", {on_load = function (package)
    package:add("defines_h", "PACKAGE_HAVE_TBOX")
end})

当依赖包tbox生效加载后,添加PACKAGE_HAVE_TBOX宏到config.h中去。


【声明】文章转载自:开源中国社区 [http://www.oschina.net]


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

Rework

Rework

Jason Fried、David Heinemeier Hansson / Crown Business / 2010-3-9 / USD 22.00

"Jason Fried and David Hansson follow their own advice in REWORK, laying bare the surprising philosophies at the core of 37signals' success and inspiring us to put them into practice. There's no jarg......一起来看看 《Rework》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具