为什么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的使用相关推荐

  1. xmake入门,构建项目原来可以如此简单

    为什么80%的码农都做不了架构师?>>>    前言 在开发xmake之前,我一直在使用gnumake/makefile来维护个人C/C++项目,一开始还好,然而等项目越来越庞大后, ...

  2. 使用xmake优雅地描述工程

    描述语法 xmake的描述语法基于lua实现,因此描述语法继承了lua的灵活性和简洁性,并且通过28原则,将描述作用域(简单描述).脚本作用域(复杂描述)进行分离,使得工程更加的简洁直观,可读性非常好 ...

  3. 编译工具:XMake 和 CMake对比分析

    关注+星标公众号,不错过精彩内容 来源 | TBOOX开源工程 首先,不得不承认,cmake很强大,发展了这么多年,整个生态已经相当完善,功能也相当丰富,这点xmake目前是比不了的. 当初作者(我, ...

  4. GNU Make 使用手册(于凤昌中译版)

    GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...

  5. canoe开发从入门到精通_xmake从入门到精通7:开发和构建Cuda程序

    xmake是一个基于Lua的轻量级现代化c/c++的项目构建工具,主要特点是:语法简单易上手,提供更加可读的项目维护,实现跨平台行为一致的构建体验. 本文我们会详细介绍下如何通过xmake来构建cud ...

  6. lua运行外部程序_LTUI v2.2 发布, 一个基于lua的跨平台字符终端UI界面库

    LTUI是一个基于lua的跨平台字符终端UI界面库. 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套 ...

  7. 2018年度国产开源软件排行

    1. Arthas:开源 Java 诊断工具 Arthas(阿尔萨斯)是阿里巴巴开源的 Java 诊断工具. Arthas 支持 JDK 6+,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能 ...

  8. 2018 年度国产开源软件新秀榜单

    来源于开源中国整理分享 开源中国社区在 2018 年新收录了近 2000 款开源软件,种类林林总总.根据开源软件的关注度和活跃度,以及它们在功能上的独特构思,最终产生了这份 2018 年度国产开源软件 ...

  9. 2018 年度新增开源软件排行榜之国产新秀榜

    回看 2018 年,无论是国内外,科技公司对「开源」投入的巨大资本不仅令人咋舌,更重要的是,伴随着资本的强势注入,有理由相信「开源」将会有更光明且清晰可见的未来.而开源软件作为其中最重要的一环,除了充 ...

  10. 开源中国 2018 年度榜单之国产新秀榜

    回看 2018 年,无论是国内外,科技公司对「开源」投入的巨大资本不仅令人咋舌,更重要的是,伴随着资本的强势注入,有理由相信「开源」将会有更光明且清晰可见的未来.而开源软件作为其中最重要的一环,除了充 ...

最新文章

  1. Android渗透测试Android渗透测试入门教程大学霸
  2. php 安全上传图片,php 图片上传安全探讨
  3. malloc 和alloc及calloc的区别
  4. 十七UML核心视图动态视图之时序图
  5. Bootstrap 3之美02-Grid简介和应用
  6. Linux网络协议栈:网卡收包分析
  7. golang:正则表达式匹配网页url_网络爬虫:3种网页抓取方法
  8. 生产环境下 RocketMQ 为什么不能开启自动创建主题?
  9. Proxmox VE2.2虚拟化安装配置学习笔记(三)
  10. HBase流量限制和表负载均衡剖析
  11. android开发那些事儿(三)--manifest文件中uses-sdk和project中target详解
  12. 测试案例分享:淘宝网用户体验测试出现的8个问题及测试方法公开
  13. 辽宁丰睿:抖音小店搭配售卖方式怎么设置?
  14. 微型计算机的外存储器 现在普遍采用什么,当前微型计算机上大部分采用的外存储器,不包含什么? 有选择A 硬盘 B 光盘 C 软盘 D 磁带...
  15. 硬盘驱动安装完成,但是没有显示?
  16. (翻译)缩略图(Thumbnail)
  17. Javascript多功能计算器
  18. win10 安装 GPU版TensorFlow
  19. APISpace 通用文字识别OCR API
  20. Python有参函数和无参函数实例

热门文章

  1. 老王的JAVA基础课:第3课 IDEA的安装和使用
  2. scrapy爬取动态网页
  3. 产业互联网将不再只是虚无缥缈,触不可及的空中楼阁
  4. 区块链对于相关流程和环节的联系,让元宇宙不再是虚无缥缈的概念
  5. 极狐Gitlab操作手册
  6. 给自己定一系列小目标
  7. 控制服务器系统,控制服务器操作系统
  8. 神级 IDEA 插件,能让你的代码飞起来!
  9. [生存志] 第51节 子产相郑铸刑书
  10. 六、流行框架介绍(SpringBoot框架详解(含底层原理介绍,适用于springBoot1.x和springBoot2.x,属于通用版本))