2016-07-23 ruki
xmake 提供了一些内置的条件判断api,用于在选择性编译时,获取到一些工程状态的相关信息,来调整编译逻辑。。 例如:is_os, is_plat, is_arch, is_kind, is_mode, is_option is_mode 我们先拿最常用的is_mode来讲讲如何使用,这个api主要用来判断当前的编译模式,例如平常编译配置的时候,会执行: bash $ xmake f -m debug $ xmake 来编译debug版本,那么模式就是debug,那么release版本,也就是release了 bash $ xmake f -m release $ xmake 但是如果仅仅只是这么配置,xmake 继续阅读 »
2000-02-22 ruki
content {:toc} 注:此处为镜像文档,最新在线文档请看:http://xmake.io/#/zh/plugins 插件开发 简介 XMake完全支持插件模式,我们可以很方便的扩展实现自己的插件,并且xmake也提供了一些内建的使用插件。 我们可以执行下 xmake -h 看下当前支持的插件: Plugins: l, lua Run the lua script. m, macro Run the given macro. doxygen 继续阅读 »
2017-09-28 ruki
本文主要介绍下xmake的整体架构设计,以及源码结构的布局和模块划分。 如果你想深度使用xmake,开发xmake插件、工程自定义脚本或者想为xmake贡献一些代码和特性,可以通过此本的介绍,对xmake项目整体有个大概的了解。, 源码地址:Github 顶层目录结构 bash ./xmake/ ├── actions # 内建的一些基础task,用于基本的构建安装等操作 ├── core # xmake的核心模块,提供最底层的实现支持 ├── languages # 所有的语言相关特性支持和扩展,都在此目录下 ├── modules # 内置的扩展模块,可用`import`导入使用 ├── pack 继续阅读 »
2017-07-31 ruki
最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。 现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的, 如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用这部分预编译头,就可以极大程度上减少频繁的头文件冗余编译。 但是不同编译器对它的支持力度和处理方式,还是有很大差异的,并不是非常通用,在xmake中封装成统一的接口和使用方式,还是费了很大的功夫才搞定。 msvc的预编译头处理 预编译头 继续阅读 »
2017-08-05 ruki
此版本带来了大量新特性更新,具体详见:xmake v2.1.5版本新特性介绍。 更多使用说明,请阅读:文档手册。 项目源码:Github, Gitee. 新特性 #83: 添加 add_csnippet,add_cxxsnippet到option来检测一些编译器特性 #83: 添加用户扩展模块去探测程序,库文件以及其他主机环境 添加find_program, find_file, find_library, find_tool和find_package 等模块接口 添加net.*和devel.*扩展模块 添加val()接口去获取内置变量,例如:val("host"), val("env PATH"), val("shell 继续阅读 »
2016-06-09 ruki
我们继续以之前讲解的hello插件为基础,现在为其增加参数配置选项,并且指定一个独立的脚本文件中进行开发,这样我们就可以写一些更复杂的插件 ```lua -- 定义一个名叫hello的插件任务 task("hello") -- 设置类型为插件 set_category("plugin") -- 插件运行的入口,这里指定main,说明从当前插件目录的main.lua脚本中加载插件入口 on_run("main") -- 设置插件的命令行选项,这里没有任何参数选项,仅仅显示插件描述 set_menu({ -- usage 继续阅读 »
2016-07-08 ruki
xmake v2.0 has supported the plugin module and we can develop ourself plugin module conveniently. We can run command xmake -h to look over some builtin plugins of xmake Plugins: l, lua Run the lua script. m, macro Run the given macro. 继续阅读 »
2016-07-14 ruki
xmake在开发插件脚本的时候,除了可以使用lua内置的print进行终端输出外,还可以通过另外一个接口:cprint实现终端的色彩高亮输出 例如: lua cprint('${bright}hello xmake') cprint('${red}hello xmake') cprint('${bright green}hello ${clear}xmake') cprint('${blue onyellow underline}hello xmake${clear}') cprint('${red}hello ${magenta}xmake') cprint('${cyan}he 继续阅读 »
2016-07-18 ruki
xmake provides the grammar: $(varname) for supporting builtin variable. .e.g lua add_cxflags("-I$(buildir)") It will translate this variable to the real value when building. -I$(buildir) => -I./build We can also use these variables in the custom scripts. lua target("test") after_build(target) print 继续阅读 »
2016-07-24 ruki
之前xmake默认编译windows目标,debug模式下采用的是-Z7编译选项,内置的调试符号信息到obj文件里面 但是这种方式按msdn的文档上说,是属于旧式的调试符号文件格式,所以为了考虑后续的兼容性,xmake修改了默认的调试符号生成规则, 改为默认启用pdb符号文件,并且pdb的方式更为常用。。 这个行为的修改,并不会影响到xmake.lua的设置,如果在这个文件中,设置了启用调试符号: lua set_symbols("debug") 那么,编译debug版本的目标时,就会自动生成pdb文件,以tbox为例: bash $ xmake f -m debug $ xmake 编译完成后,会自动在build 继续阅读 »