内容简介:历经四个多月,xmake终于更新了新版本v2.2.2,并且上线了重量级功能:原生支持的远程依赖包管理。 而这个特性,其实我陆陆续续写了将近一年的时间,才初步完成,对于此特性的开发进展和历史,有兴趣的同学可以看下...
历经四个多月,xmake终于更新了新版本v2.2.2,并且上线了重量级功能:原生支持的远程依赖包管理。
而这个特性,其实我陆陆续续写了将近一年的时间,才初步完成,对于此特性的开发进展和历史,有兴趣的同学可以看下相关issues:#69。
目前的实现效果如下,完全一致的语义版本依赖描述:
完全一致的跨平台构建行为,一键xmake编译:
完整的项目描述:
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等包管理 工具 来解决这一问题,但是多少都有一些局限性,例如:
homebrew不支持iphoneos, android, windows平台
vcpkg不支持语义版本选择,多版本管理
另外都不支持项目管理和构建
对于目前现有的跨平台构建工具,都缺少内置的包管理支持,像cmake仅提供了find_package
去查找系统包,虽然可以和vcpkg等第三方包管理配合使用,但我个人觉得并不是很方便。 这会使得项目的其他用户在编译的时候,额外要求去安装vcpkg或者安装依赖库到系统上才行,对于pc平台还好弄些,对于iphoneos, android等平台的依赖库,用户就要折腾上一会了。
而xmake的理念就是:真正的一致维护, 真正的一键编译
构建行为的一致性: 不管你的项目是否有库依赖,工具依赖,只需要执行一个
xmake
命令,即可编译通过。项目维护的一致性: 不管你的项目是在windows上用,还是给linux, iphone, android上用,都只需要一份xmake.lua维护项目即可。
而cmake还需要生成额外的第三方IDE工程文件,即使cmakelist.txt相同,但是构建、维护体验上对用户来讲都不可能保证完全一致,毕竟还受限于vc/make此类工具。
目前支持的特性
语义版本支持,例如:”>= 1.1.0 < 1.2”, “~1.6”, “1.2.x”, “1.*”
提供官方包仓库、自建私有仓库、项目内置仓库等多仓库管理支持
跨平台包编译集成支持(不同平台、不同架构的包可同时安装,快速切换使用)
debug依赖包支持,实现源码调试
依赖包处理机制
这里我们简单介绍下整个依赖包的处理机制:
优先检测当前系统目录、第三方包管理下有没有存在指定的包,如果有匹配的包,那么就不需要下载安装了 (当然也可以设置不使用系统包)
检索匹配对应版本的包,然后下载、编译、安装(注:安装在特定xmake目录,不会干扰系统库环境)
编译项目,最后自动链接启用的依赖包
新特性
新增fasm汇编器支持
添加
has_config
,get_config
和is_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]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- android 添加构建依赖项
- Gradle构建SpringBoot程序依赖管理之依赖版本自动控制
- 使用Java 9的模块化来构建零依赖的原生应用
- xmake v2.2.2 发布, 让C/C++拥有包依赖自动构建
- 使用Kotlin构建MVVM应用程序—第四部分:依赖注入Dagger2
- 使用Kotlin构建MVVM应用程序—第四部分:依赖注入Dagger2
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Little Typer
Daniel P. Friedman、David Thrane Christiansen、Duane Bibby、Robert Harper、Conor Mcbride / MIT Press / 2018-10-16 / GBP 30.00
An introduction to dependent types, demonstrating the most beautiful aspects, one step at a time. A program's type describes its behavior. Dependent types are a first-class part of a language, and are......一起来看看 《The Little Typer》 这本书的介绍吧!