软件更新丨xmake v2.2.5,更加完善的 C/C++ 包依赖管理
摘要:#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环境改动后查找工具不对问题
点击下方链接,获取软件下载地址↓↓↓