此版本耗时四个多月,对包依赖管理进行了重构改进,官方仓库新增了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环境改动后查找工具不对问题
转自 https://www.oschina.net/news/105605/xmake-2-2-5-released