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

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

内容简介:此版本耗时四个多月,对包依赖管理进行了重构改进,官方仓库新增了mysql,ffmpeg等常用依赖包,并且新增了大量新特性。 目前内置的包管理已经支持的非常完善了,我们可以通过 add_requires("libuv master", "ff...

此版本耗时四个多月,对包依赖管理进行了重构改进,官方仓库新增了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环境改动后查找 工具 不对问题

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

查看所有标签

猜你喜欢:

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

Java Concurrency in Practice

Java Concurrency in Practice

Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea / Addison-Wesley Professional / 2006-5-19 / USD 59.99

This book covers: Basic concepts of concurrency and thread safety Techniques for building and composing thread-safe classes Using the concurrency building blocks in java.util.concurrent Pe......一起来看看 《Java Concurrency in Practice》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具