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

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

内容简介:此版本主要是对远程依赖包管理进行了一些改进,并且新增了很多小特性,并且此版本已经可以支持通过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]


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

查看所有标签

猜你喜欢:

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

Java学习笔记

Java学习笔记

林信良 / 清华大学出版社 / 2015-3-1 / CNY 68.00

●本书是作者多年来教学实践经验的总结,汇集了学员在学习课程或认证考试中遇到的概念、操作、应用等问题及解决方案 ●针对Java SE 8新功能全面改版,无论是章节架构或范例程序代码,都做了重新编写与全面翻新 ●详细介绍了JVM、JRE、Java SE API、JDK与IDE之间的对照关系 ●从Java SE API的源代码分析,了解各种语法在Java SE API中的具体应用 ......一起来看看 《Java学习笔记》 这本书的介绍吧!

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

在线压缩/解压 HTML 代码

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具