xmake v2.2.2 发布, 让C/C++拥有包依赖自动构建

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

内容简介:历经四个多月,xmake终于更新了新版本v2.2.2,并且上线了重量级功能:原生支持的远程依赖包管理。 而这个特性,其实我陆陆续续写了将近一年的时间,才初步完成,对于此特性的开发进展和历史,有兴趣的同学可以看下...

历经四个多月,xmake终于更新了新版本v2.2.2,并且上线了重量级功能:原生支持的远程依赖包管理。

而这个特性,其实我陆陆续续写了将近一年的时间,才初步完成,对于此特性的开发进展和历史,有兴趣的同学可以看下相关issues:#69

目前的实现效果如下,完全一致的语义版本依赖描述:

xmake v2.2.2 发布, 让C/C++拥有包依赖自动构建

完全一致的跨平台构建行为,一键xmake编译:

xmake v2.2.2 发布, 让C/C++拥有包依赖自动构建

完整的项目描述:

add_requires("tbox 1.6.*", "libpng ~1.16", "zlib")

target("test")
    set_kind("binary")
    add_files("src/*.c") 
    add_packages("tbox", "libpng", "zlib")

我先简单介绍下我做这个功能的背景:

我们在写C/C++程序的时候,对于第三方依赖库的使用一直是一个老大难问题,因为每个依赖库的构建系统不同、代码平台支持力度的差异,导致没法像其他高级语言那样有方便好用的包管理支持。

虽然现在已经有了homebrew, vcpkg等包管理 工具 来解决这一问题,但是多少都有一些局限性,例如:

  1. homebrew不支持iphoneos, android, windows平台

  2. vcpkg不支持语义版本选择,多版本管理

  3. 另外都不支持项目管理和构建

对于目前现有的跨平台构建工具,都缺少内置的包管理支持,像cmake仅提供了find_package去查找系统包,虽然可以和vcpkg等第三方包管理配合使用,但我个人觉得并不是很方便。 这会使得项目的其他用户在编译的时候,额外要求去安装vcpkg或者安装依赖库到系统上才行,对于pc平台还好弄些,对于iphoneos, android等平台的依赖库,用户就要折腾上一会了。

而xmake的理念就是:真正的一致维护, 真正的一键编译

  • 构建行为的一致性: 不管你的项目是否有库依赖,工具依赖,只需要执行一个xmake命令,即可编译通过。

  • 项目维护的一致性: 不管你的项目是在windows上用,还是给linux, iphone, android上用,都只需要一份xmake.lua维护项目即可。

而cmake还需要生成额外的第三方IDE工程文件,即使cmakelist.txt相同,但是构建、维护体验上对用户来讲都不可能保证完全一致,毕竟还受限于vc/make此类工具。

目前支持的特性

  • 语义版本支持,例如:&rdquo;>= 1.1.0 < 1.2&rdquo;, &ldquo;~1.6&rdquo;, &ldquo;1.2.x&rdquo;, &ldquo;1.*&rdquo;

  • 提供官方包仓库、自建私有仓库、项目内置仓库等多仓库管理支持

  • 跨平台包编译集成支持(不同平台、不同架构的包可同时安装,快速切换使用)

  • debug依赖包支持,实现源码调试

依赖包处理机制

这里我们简单介绍下整个依赖包的处理机制:

xmake v2.2.2 发布, 让C/C++拥有包依赖自动构建

  1. 优先检测当前系统目录、第三方包管理下有没有存在指定的包,如果有匹配的包,那么就不需要下载安装了 (当然也可以设置不使用系统包)

  2. 检索匹配对应版本的包,然后下载、编译、安装(注:安装在特定xmake目录,不会干扰系统库环境)

  3. 编译项目,最后自动链接启用的依赖包

新特性

  • 新增fasm汇编器支持

  • 添加has_configget_configis_config接口去快速判断option和配置值

  • 添加set_config接口去设置默认配置

  • 添加$xmake --try去尝试构建工程

  • 添加set_enabled(false)去显示的禁用target

  • #69: 添加远程依赖包管理, add_requires("tbox ~1.6.1")

  • #216: 添加windows mfc编译规则

改进

  • 改进Qt编译编译环境探测,增加对mingw sdk的支持

  • 在自动扫描生成的xmake.lua中增加默认debug/release规则

  • #178: 修改mingw平台下的目标名

  • 对于add_files()在windows上支持大小写不敏感路径模式匹配

  • 改进detect.sdks.find_qt对于Qt根目录的探测

  • #184: 改进lib.detect.find_package支持vcpkg

  • #208: 改进rpath对动态库的支持

Bugs修复

  • #177: 修复被依赖的动态库target,如果设置了basename后链接失败问题

  • 修复$xmake f --menu中Exit问题以及cpu过高问题

  • #197: 修复生成的vs201x工程文件带有中文路径乱码问题

  • 修复WDK规则编译生成的驱动在Win7下运行蓝屏问题

  • #205: 修复vcproj工程生成targetdir, objectdir路径设置不匹配问题

更多详细描述见文章:http://tboox.org/cn/2018/10/13/xmake-update-v2.2.2-package-deps/


【声明】文章转载自:开源中国社区 [http://www.oschina.net]


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

Ordering Disorder

Ordering Disorder

Khoi Vinh / New Riders Press / 2010-12-03 / USD 29.99

The grid has long been an invaluable tool for creating order out of chaos for designers of all kinds—from city planners to architects to typesetters and graphic artists. In recent years, web designers......一起来看看 《Ordering Disorder》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具