皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

xmake v2.2.5,更加完善的 C/C++ 包依赖管理

此版本耗时四个多月,对包依赖管理进行了重构改进,官方仓库新增了 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.serializestring.deserialize 去序列化,反序列化对象,函数以及其他类型
  • 添加 xmake g --menu 去图形化配置全局选项
  • #283: 添加 target:installdir()set_installdir() 接口
  • #260: 添加 add_platformdirs 接口,用户现在可以自定义扩展编译平台
  • #310: 新增主题设置支持,用户可随意切换和扩展主题样式
  • #318: 添加 add_installfiles 接口到 target 去自定义安装文件
  • #339: 改进 add_requiresfind_package 使其支持对第三方包管理的集成支持
  • #327: 实现对 conan 包管理的集成支持
  • 添加内置 API find_packages("pcre2", "zlib") 去同时查找多个依赖包,不需要通过 import 导入即可直接调用
  • #320: 添加模板配置文件相关接口,add_configfilesset_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_featuresoption.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:settarget: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

分享到:更多 ()