如果我们要写跨平台的c/c++代码,很多时候需要处理由于不同编译器对c/c++各个标准支持力度不同导致的兼容性问题,一般通常的解决办法是:自己在代码中通过宏去判断各个编译器的版本、内置宏、标准库宏、__has_feature等来检测处理。
自己如果在代码中按上述的方式检测,会很繁琐,尤其是像c++这种存在大量语法特性,如果一一检测过来,工作量是非常大的。
通过构建工具预先检测编译特性
另外比较省事的方式,就是依赖构建工具提前做好检测,然后把检测结果作为宏添加到编译中去,这样代码只需要判断对应的特性宏是否存在,就可以进行处理了。
在cmake中就有类似的检测机制,非常强大,因此xmake也对其进行了支持,提供更加灵活强大的编译
继续阅读 »
此版本带来了大量新特性更新,具体详见: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
继续阅读 »
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. 提供代码片段检测接口,实
继续阅读 »