摘要:#339: 改进add_requires和find_package使其支持对第三方包管理的集成支持。方便的安装使用依赖包,但是官方的包仓库xmake-repo目前收录的包还非常少,因此为了扩充xmake的包仓库, xmake新增了对第三方包管理器的内置支持,通过包命名空间显式指定其他包管理器中的包,目前支持对conan::,brew::和vcpkg::包管理中的包进行安装。

简介

XMake是一个基于Lua的轻量级跨平台自动构建工具,支持在各种主流平台上构建项目

xmake的目标是开发者更加关注于项目本身开发,简化项目的描述和构建,并且提供平台无关性,使得一次编写,随处构建

它跟cmake、automake、premake有点类似,但是机制不同,它默认不会去生成IDE相关的工程文件,采用直接编译,并且更加的方便易用 采用lua的工程描述语法更简洁直观,支持在大部分常用平台上进行构建,以及交叉编译

并且xmake提供了创建、配置、编译、打包、安装、卸载、运行等一些actions,使得开发和构建更加的方便和流程化。

不仅如此,它还提供了许多更加高级的特性,例如插件扩展、脚本宏记录、批量打包、自动文档生成等等。。

此版本耗时四个多月,对包依赖管理进行了重构改进,官方仓库新增了mysql,ffmpeg等常用依赖包,并且新增了大量新特性。

目前内置的包管理已经支持的非常完善了,我们可以通过

add_requires("libuv master", "ffmpeg", "zlib 1.20.*")`

方便的安装使用依赖包,但是官方的包仓库xmake-repo目前收录的包还非常少,因此为了扩充xmake的包仓库, xmake新增了对第三方包管理器的内置支持,通过包命名空间显式指定其他包管理器中的包,目前支持对conan::,brew::和vcpkg::包管理中的包进行安装。

安装homebrew的依赖包

add_requires("brew::zlib", {alias = "zlib"}})
add_requires("brew::pcre2/libpcre2-8", {alias = "pcre2"}})
target("test")
set_kind("binary")
add_files("src/*.c")
add_packages("pcre2", "zlib")

安装vcpkg的依赖包

add_requires("vcpkg::zlib", "vcpkg::pcre2")
target("test")
set_kind("binary")
add_files("src/*.c")
add_packages("vcpkg::zlib", "vcpkg::pcre2")

安装conan的依赖包

新版本实现了对conan的generator,来集成获取conan中的包信息,我们在xmake中使用也是非常的方便,并且可以传递conan包的所有配置参数。

add_requires("conan::zlib/1.2.11@conan/stable", {alias = "zlib", debug = true})
add_requires("conan::OpenSSL/1.0.2n@conan/stable", {alias = "openssl", configs = {options = "OpenSSL:shared=True"}})
target("test")
set_kind("binary")
add_files("src/*.c")
add_packages("openssl", "zlib")

执行xmake进行编译后:

ruki:test_package ruki$ xmake
checking for the architecture ... x86_64
checking for the Xcode directory ... /Applications/Xcode.app
checking for the SDK version of Xcode ... 10.14
note: try installing these packages (pass -y to skip confirm)?
-> conan::zlib/1.2.11@conan/stable (debug)
-> conan::OpenSSL/1.0.2n@conan/stable
please input: y (y/n)
=> installing conan::zlib/1.2.11@conan/stable .. ok
=> installing conan::OpenSSL/1.0.2n@conan/stable .. ok
[ 0%]: ccache compiling.release src/main.c
[100%]: linking.release test

关于新特性的详细说明,可以看下下面的官方文档,或者看下相关文章介绍:xmake v2.2.5新特性详解

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

  • 项目源码
  • 官方文档

更新内容

新特性

  • 添加string.serialize和string.deserialize去序列化,反序列化对象,函数以及其他类型
  • 添加xmake g --menu去图形化配置全局选项
  • #283: 添加target:installdir()和set_installdir()接口
  • #260: 添加add_platformdirs接口,用户现在可以自定义扩展编译平台
  • #310: 新增主题设置支持,用户可随意切换和扩展主题样式
  • #318: 添加add_installfiles接口到target去自定义安装文件
  • #339: 改进add_requires和find_package使其支持对第三方包管理的集成支持
  • #327: 实现对conan包管理的集成支持
  • 添加内置API find_packages("pcre2", "zlib")去同时查找多个依赖包,不需要通过import导入即可直接调用
  • #320: 添加模板配置文件相关接口,add_configfiles和set_configvar
  • #179: 扩展xmake project插件,新增CMakelist.txt生成支持
  • #361: 增加对vs2019 preview的支持
  • #368: 支持private, public, interface属性设置去继承target配置
  • #284: 通过add_configs()添加和传递用户自定义配置到package()
  • #319: 添加add_headerfiles接口去改进头文件的设置
  • #342: 为includes()添加一些内置的辅助函数,例如:check_cfuncs

改进

  • 针对远程依赖包,改进版本和调试模式切换
  • #264: 支持在windows上更新dev/master版本,xmake update dev
  • #293: 添加xmake f/g --mingw=xxx 配置选线,并且改进find_mingw检测
  • #301: 改进编译预处理头文件以及依赖头文件生成,编译速度提升30%
  • #322: 添加option.add_features, option.add_cxxsnippets 和 option.add_csnippets
  • 移除xmake 1.x的一些废弃接口, 例如:add_option_xxx
  • #327: 改进lib.detect.find_package增加对conan包管理器的支持
  • 改进lib.detect.find_package并且添加内建的find_packages("zlib 1.x", "openssl", {xxx = ...})接口
  • 标记set_modes()作为废弃接口, 我们使用add_rules("mode.debug", "mode.release")来替代它
  • #353: 改进target:set, target:add 并且添加target:del去动态修改target配置
  • #356: 添加qt_add_static_plugins()接口去支持静态Qt sdk
  • #351: 生成vs201x插件增加对yasm的支持
  • 重构改进整个远程依赖包管理器,更加快速、稳定、可靠,并提供更多的常用包

Bugs修复

  • 修复无法通过 set_optimize() 设置优化选项,如果存在add_rules("mode.release")的情况下
  • #289: 修复在windows下解压gzip文件失败
  • #296: 修复option.add_includedirs对cuda编译不生效
  • #321: 修复PATH环境改动后查找工具不对问题

点击下方链接,获取软件下载地址↓↓↓

XMake首页、文档和下载 - 基于 Lua 的跨平台构建工具 - 开源中国

相关文章