xmake中add_files的使用
为什么80%的码农都做不了架构师?>>>
如果你看了工程描述入门,那么是否觉得通过 add_files 添加源文件相当的方便?
目前它可以支持.c/.cpp/.s/.S/.m/.mm/.o/.obj/.a/.lib这些后缀的源代码和库文件,其中通配符*表示匹配当前目录下文件,而**则匹配多级目录下的文件。
例如:
add_files("src/test_*.c")
add_files("src/xxx/**.cpp")
add_files("src/asm/*.S", "src/objc/**/hello.m")
add_files的使用其实是相当灵活方便的,其匹配模式我借鉴了premake的风格,但是又对其进行了改善和增强。
使得不仅可以匹配文件,还有可以在添加文件同时,过滤排除指定模式的一批文件。。
例如:
-- 递归添加src下的所有c文件,但是不包括src/impl/下的所有c文件
add_files("src/**.c|impl/*.c")-- 添加src下的所有cpp文件,但是不包括src/test.cpp、src/hello.cpp以及src下所有带xx_前缀的cpp文件
add_files("src/*.cpp|test.cpp|hello.cpp|xx_*.cpp")
其中分隔符|之后的都是需要排除的文件,这些文件也同样支持匹配模式,并且可以同时添加多个过滤模式,只要中间用|分割就行了。。
注: 为了使得描述上更加的精简,|之后的过滤描述都是基于起一个模式:src/*.cpp 中 *之前的目录为基础的。
所以上面的例子后面过滤的都是在src下的文件,这个是要注意的。。
下面来看个TBOX的xmake.lua中add_files的例子:
add_files("*.c")
add_files("asio/aioo.c")
add_files("asio/aiop.c")
add_files("math/**.c") -- 这里过滤了libc/string/impl/**.c
add_files("libc/**.c|string/impl/**.c") add_files("utils/*.c|option.c")
add_files("prefix/**.c")
add_files("memory/**.c")
add_files("string/**.c") -- 这里过滤了stream/**/charset.c,stream/**/zip.c,stream/**async_**.c,stream/transfer_pool.c
add_files("stream/**.c|**/charset.c|**/zip.c|**async_**.c|transfer_pool.c") -- 这里过滤了network/impl/ssl下的所有c文件
add_files("network/**.c|impl/ssl/*.c") add_files("algorithm/**.c")
add_files("container/**.c")
add_files("libm/libm.c")
add_files("libm/idivi8.c")
add_files("libm/ilog2i.c")
add_files("libm/isqrti.c")
add_files("libm/isqrti64.c")
add_files("libm/idivi8.c")
add_files("platform/*.c|aicp.c")-- 如果当前架构是arm,则添加arm相关的asm优化代码
if archs("arm.*") thenadd_files("utils/impl/crc_arm.S")
end-- 如果当前启用了charset模块,那么添加对应的c文件(这里的文件在上面是被过滤掉的)
-- options接口后续会详解
if options("charset") then add_files("charset/**.c")add_files("stream/impl/filter/charset.c")
end
添加文件的时候支持过滤一些文件的一个好处就是,可以为后续根据不同开关逻辑添加文件提供基础。
尤其需要提一下的是,xmake还支持直接添加 .o/obj/.a/.lib的对象文件和库文件到目标中
这个跟add_links是有区别的,links是链接库中的代码,而这个是直接将静态库中的对象文件合并到目标程序中。。
这个的详细介绍,可参看高级特性之合并静态库
- XMake项目详情
- XMake项目源码
- XMake项目文档
转载于:https://my.oschina.net/tboox/blog/539953
xmake中add_files的使用相关推荐
- xmake入门,构建项目原来可以如此简单
为什么80%的码农都做不了架构师?>>> 前言 在开发xmake之前,我一直在使用gnumake/makefile来维护个人C/C++项目,一开始还好,然而等项目越来越庞大后, ...
- 使用xmake优雅地描述工程
描述语法 xmake的描述语法基于lua实现,因此描述语法继承了lua的灵活性和简洁性,并且通过28原则,将描述作用域(简单描述).脚本作用域(复杂描述)进行分离,使得工程更加的简洁直观,可读性非常好 ...
- 编译工具:XMake 和 CMake对比分析
关注+星标公众号,不错过精彩内容 来源 | TBOOX开源工程 首先,不得不承认,cmake很强大,发展了这么多年,整个生态已经相当完善,功能也相当丰富,这点xmake目前是比不了的. 当初作者(我, ...
- GNU Make 使用手册(于凤昌中译版)
GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...
- canoe开发从入门到精通_xmake从入门到精通7:开发和构建Cuda程序
xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验. 本文我们会详细介绍下如何通过xmake来构建cud ...
- lua运行外部程序_LTUI v2.2 发布, 一个基于lua的跨平台字符终端UI界面库
LTUI是一个基于lua的跨平台字符终端UI界面库. 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套 ...
- 2018年度国产开源软件排行
1. Arthas:开源 Java 诊断工具 Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具. Arthas 支持 JDK 6+,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能 ...
- 2018 年度国产开源软件新秀榜单
来源于开源中国整理分享 开源中国社区在 2018 年新收录了近 2000 款开源软件,种类林林总总.根据开源软件的关注度和活跃度,以及它们在功能上的独特构思,最终产生了这份 2018 年度国产开源软件 ...
- 2018 年度新增开源软件排行榜之国产新秀榜
回看 2018 年,无论是国内外,科技公司对「开源」投入的巨大资本不仅令人咋舌,更重要的是,伴随着资本的强势注入,有理由相信「开源」将会有更光明且清晰可见的未来.而开源软件作为其中最重要的一环,除了充 ...
- 开源中国 2018 年度榜单之国产新秀榜
回看 2018 年,无论是国内外,科技公司对「开源」投入的巨大资本不仅令人咋舌,更重要的是,伴随着资本的强势注入,有理由相信「开源」将会有更光明且清晰可见的未来.而开源软件作为其中最重要的一环,除了充 ...
最新文章
- Android渗透测试Android渗透测试入门教程大学霸
- php 安全上传图片,php 图片上传安全探讨
- malloc 和alloc及calloc的区别
- 十七UML核心视图动态视图之时序图
- Bootstrap 3之美02-Grid简介和应用
- Linux网络协议栈:网卡收包分析
- golang:正则表达式匹配网页url_网络爬虫:3种网页抓取方法
- 生产环境下 RocketMQ 为什么不能开启自动创建主题?
- Proxmox VE2.2虚拟化安装配置学习笔记(三)
- HBase流量限制和表负载均衡剖析
- android开发那些事儿(三)--manifest文件中uses-sdk和project中target详解
- 测试案例分享:淘宝网用户体验测试出现的8个问题及测试方法公开
- 辽宁丰睿:抖音小店搭配售卖方式怎么设置?
- 微型计算机的外存储器 现在普遍采用什么,当前微型计算机上大部分采用的外存储器,不包含什么? 有选择A 硬盘 B 光盘 C 软盘 D 磁带...
- 硬盘驱动安装完成,但是没有显示?
- (翻译)缩略图(Thumbnail)
- Javascript多功能计算器
- win10 安装 GPU版TensorFlow
- APISpace 通用文字识别OCR API
- Python有参函数和无参函数实例
热门文章
- 老王的JAVA基础课:第3课 IDEA的安装和使用
- scrapy爬取动态网页
- 产业互联网将不再只是虚无缥缈,触不可及的空中楼阁
- 区块链对于相关流程和环节的联系,让元宇宙不再是虚无缥缈的概念
- 极狐Gitlab操作手册
- 给自己定一系列小目标
- 控制服务器系统,控制服务器操作系统
- 神级 IDEA 插件,能让你的代码飞起来!
- [生存志] 第51节 子产相郑铸刑书
- 六、流行框架介绍(SpringBoot框架详解(含底层原理介绍,适用于springBoot1.x和springBoot2.x,属于通用版本))