2017-07-31 ruki
最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。 现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的, 如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用这部分预编译头,就可以极大程度上减少频繁的头文件冗余编译。 但是不同编译器对它的支持力度和处理方式,还是有很大差异的,并不是非常通用,在xmake中封装成统一的接口和使用方式,还是费了很大的功夫才搞定。 msvc的预编译头处理 预编译头 继续阅读 »
2017-07-29 ruki
2.1.5版本现已进入收尾阶段,此版本加入了一大波新特性,目前正在进行稳定性测试和修复,在这里,先来介绍下新版本中引入了哪些些新特性和改进。 1. 提供类似cmake的find_*系列接口,实现各种查找,例如:find_package, find_library, find_file, ... 2. 提供模块接口,实现编译器的各种检测,例如:has_features, has_flags, has_cincludes, has_cfuncs, ... 3. 实现大量扩展模块,提供文件下载、解压缩、git操作等接口 4. 支持预编译头文件支持,改进c++编译效率 5. 支持在工程中自定义模块进行扩展 6. 提供代码片段检测接口,实 继续阅读 »
2016-07-12 ruki
为了进一步提升构建效率,减少没必要的重建,xmake新增了对头文件的依赖检测,以及自动构建仅仅需要重新编译的源文件,提升编译速度,并且完全支持windows、linux、macosx等大部分平台。。 由于检测过程本身也会有一些性能损耗,因此xmake对此进行了深度优化,实现极速依赖检测: 对依赖头文件进行过滤,如果是系统头文件,非自身项目的第三方头文件,自动忽略,这些头文件基本上不会再开发项目的时候,经常变动,所以没必要去每次检测他们,如果真有变动,手动重建下就行了 针对每个头文件的检测结果进行缓存,直接应用到下一个源文件上,减少重复检测的次数 其他一些细节优化 继续阅读 »
2018-03-05 YongHao Hu
go
/* #include */ /* #include */ int main(){ char *c = malloc(10); c[0] = 'a'; printf("hi, "); printf("%s\n", c); free(c); return 0; } 为什么这个程序缺了头文件, 依然可以正常编译运行, 并且有正确的结果? 继续阅读 »
2016-07-17 ruki
主页 源码 更新内容 新特性 增加头文件依赖自动检测和增量编译,提高编译速度 在终端中进行颜色高亮提示 添加调试器支持,xmake run -d program ... 改进 增强运行shell的系列接口 更新luajit到v2.0.4版本 改进makefile生成插件,移除对xmake的依赖,并且支持windows/linux/macosx等大部分pc平台 优化多任务编译速度,在windows下编译提升较为明显 Bugs修复 修复安装目录错误问题 修复import根目录错误问题 修复在多版本vs同时存在的情况下,检测vs环境失败问题 继续阅读 »
2017-03-23 ruki
概述 此版本主要增强了vs201x工程的生成,以及支持vs2017编译环境,并且针对archlinux提供更加方便的aur安装。 项目主页 查看文档 详细更新内容如下: 新特性 添加aur打包脚本,并支持用yaourt包管理器进行安装。 添加set_basename接口,便于定制化修改生成后的目标文件名 改进 支持vs2017编译环境 支持编译android版本的rust程序 增强vs201x工程生成插件,支持同时多模式、架构编译 Bugs修复 修复编译android程序,找不到系统头文件问题 修复检测选项行为不正确问题 #57: 修复代码文件权限到0644 构建演示 继续阅读 »