成人一对一视频交友

Xmake v2.3.8发布,增加了英特尔C /Fortran编译器支持

elbert
elbert

Xmake是基于Lua的轻量级跨平台构建工具,使用xmake.lua来维护项目构建。与makefile/CMakeLists.txt相比,配置语法更简单直观,对初学者非常友好。它可以在短时间内快速启动,使用户能够更加专注于实际的项目开发。

在这个新版本中,我们在所有平台上支持英特尔系列的c和Fortran编译器,完善了上一版本中新增的Wasm工具链的支持,同时也支持针对Wasm的Qt SDK。

此外,我们还将luajit升级到最新的v2.1版本,xmake也在跨平台方面做了很大的改进,增加了mips64架构的运行支持。

项目源代码

官方文件

入门课程

新特性介绍

Intel C++ 编译器支持

在这个版本中,我们支持Intel系列的c编译器,包括windows上的icl和linux/macOS上的icc/icpc。

要启用Intel C编译器,我们只需通过安装了Intel编译器的系统上的- toolchain=icc参数切换到相应的工具链。

$ xmake f – toolchain=icc

$ xmake

Intel Fortran 编译器支持

在之前的版本中,xmake只支持gfortran编译器,但是在这个版本中,我们也支持Intel Fortran编译器,也就是ifort,我们只需要切换到相应的ifort工具链就可以使用了。

$ xmake f – toolchain=ifort

$ xmake

Wasm 平台和 Qt/Wasm 支持

在上一个版本中,我们增加了- toolchain=emcc工具链来支持wasm程序的编译,但是只指定工具链并不能很好的调整目标程序的扩展,比如*的文件生成。js和* .wasm。

在新版本中,我们继续添加了xmake f -p wasm平台,内置emcc工具链,并再次改进了外设配置。

只要切换到wasm平台,xmake就会生成*。js和相应的目标文件,如*。默认情况下为wasm,另外生成*。可以加载js运行wasm程序的html页面。

此外,我们还为Wasm支持Qt SDK,比如我们创建了一个Qt QuickApp项目。

$ xmake create-t Qt . quick app _ static quick app

在这里,我们注意到我们正在创建一个需要静态链接的Qt项目。由于Qt库的wasm版本,我们需要强制静态链接到程序,以便正常使用它。

生成的工程文件xmake.lua大致如下:

add_rules(‘mode.debug ‘,’ mode.release ‘)

包括(‘ qt_add_static_plugins.lua ‘)

目标(‘演示’)

add_rules(‘qt.quickapp_static ‘)

add_headerfiles(‘src/*。h ‘)

add_files(‘src/*。CPP’)

add_files(‘src/qml.qrc ‘)

add _ frameworks(‘ QtQuickcontrols 2 ‘,’ QtQuickTemplates2 ‘)

Qt _ add _ static _ plugins(‘ qtquick 2 plugin ‘,{linkdirs=’qml/QtQuick.2 ‘,links=’ qtquick2plugin ‘ })

Qt _ add _ static _ plugins(‘ QtQuick 2 window plugin ‘,{ link dirs=’ qml/QtQuick/Window . 2 ‘,links=’ windowplugin ‘ })

Qt _ add _ static _ plugins(‘ qtquickcontrols 2 plugin ‘,{ link dirs=’ qml/QtQuick/controls . 2 ‘,links=’ qtquickcontrols2plugin ‘ })

Qt _ add _ static _ plugins(‘ QtQuickTemplates 2 plugin ‘,{ link dirs=’ qml/QtQuick/Templates . 2 ‘,link=’ QtQuickTemplates 2 plugin ‘ })

在上面的配置中,我们不仅启用了qt.quickapp_static编译规则,还通过qt_add_static_plugins配置了一些必要的qt插件。

接下来,我们只需要切换到wasm平台,确定Qt SDK设置好了,就可以完成编译了。

$ xmake f -p wasm [ – qt=~/Qt]

$ xmake

编译后,xmake将在构建目录中生成demo.html和相应的demo.js/demo.wasm程序。我们可以打开demo.html页面运行我们编译的Qt程序,显示效果如下:

有关Qt/Wasm的更详细描述,请参见:第956期

新增 Math/Float-point 编译优化设置

我们增加了set_fpmodels()设置界面,用于设置浮点的编译模式,设置数学计算相关优化的编译抽象。它提供了几个常用的级别,比如快、严、除、精,有的可以同时设置,有的冲突,最后设置生效。

有关这些级别的描述,请参考微软的文档:指定浮点行为

当然,与gcc/icc等其他编译器相对应,xmake映射到不同的编译标志。

set_fpmodels(‘fast ‘)

set_fpmodels(‘strict ‘)

set_fpmodels(‘fast ‘,’ except ‘)

set_fpmodels(‘精确’)-默认值

请参阅:第981期,了解这篇文章的详情

OpenMP 支持

为了使openmp特性更抽象、更简单,我们可以通过增加两个新的规则来设置,c.openmp和c .openmp,另外在linux和macOS上需要额外的libomp库,可以通过add _ requires(‘ LIBOMP ‘)快速引用和集成。

add_requires(‘libomp ‘,{optional=true})

目标(‘循环’)

set_kind(‘binary ‘)

add_files(‘src/*。CPP’)

add_rules(‘c .openmp ‘)

add_packages(‘libomp ‘)

如果是c代码,应该启用add _ rules(‘ c . openmp ‘);在c/c混合编译的情况下,应该设置这两个规则。

c11/c17 的支持

在新版本中,xmake还改进了set_languages,增加了新的c11/c17设置,并且还改编和支持了msvc最新版本提供的/std:c11和/std3360c17。

我们只需要一个简单的设置:

set_languages(‘c17 ‘)

您可以启用c17标准进行编译,即使编译器(如较低版本的msvc)不支持,xmake也会自动忽略这些设置。

更好的 Mingw 支持

这一块的改进涉及到几个方面。一是Windows下Mingw SDK根目录自动检测的改进。在大多数情况下,我们不需要额外的配置——Mingw=参数明确指定路径,也可以自动检测。

参见:第977期,了解这件作品的详情

另外,除了Mys2/Mingw之外,还有macOS,linux/Mingw,新版本我们也支持llvm-mingw SDK,这样我们就可以用Mingw来编译arm/arm64架构的程序了。

$ xmake f -p mingw -a arm64

$ xmake

另外,在远程依赖包的自动编译和集成中,xmake可以自动编译和集成,直接与cmakelists的第三方库使用,甚至在mingw平台上使用,非常快捷方便。

最近在xmake-repo的官方C/C包仓库里,我们也新增了很多支持mingw平台的库,可以直接使用。

更好的跨平台运行

我们增加了对mips64架构的linux系统运行支持,提高了arm/arm64下xmake的运行稳定性。通过结合最新的luajit v2.1,我们解决了luajit留下的很多问题,比如arm64下的lightuserdata的坏指针。

新增 macOS Sierra for arm64 支持

Xmake也适应了最新的Xcode-beta,增加了对arm64的macOs的目标程序编译支持,只需要切换到arm64架构就可以编译。

$ xmake f-a arm 64[-Xcode=Applications/Xcode-beta . app/]

$ xmake

当然,前提是在macOS下运行,使用支持开发者过渡套件(DTK)的最新Xcode-beta版本。

官方仓库收录更多的 C/C++ 库

在xmake的官方C/C仓库xmake-repo中,我们最近增加了几十个常用的C/C库,libx11系列的所有库都包含在内了。

虽然仓库包装维护工作量巨大,但目前的发展趋势越来越活跃,我们收到了越来越多用户对仓库包装维护和改进的贡献。

此外,我们的官方仓库可以快速集成Linux、MAC OS、windows、mingw、BSD、msys、iphone OS、Android等8个常用平台的库,实现真正的跨平台C/C远程库集成和使用支持。

目前我们已经收录了一些包列表和支持平台,可以在这里查看:PKGLIST.md

我们一直在努力解决C/C库生态凌乱、集成使用繁琐等问题,提供快速一致的自动集成编译方案。xmake不仅支持vcpkg/conan/clib/homebrew等第三方官方仓库包的集成,还努力完善自建官方仓库,实现更好的集成体验。

例如:

add_requires(‘tbox 1.6.1 ‘,’ libuv master ‘,’ vcpkg:ffmpeg ‘,’ brew : PCR 2/lib PCR 2-8 ‘)

add _ requires(‘ Conan : open SSL/1 . 1 . 1g ‘,{alias=’openssl ‘,optional=true,debug=true})

目标(‘测试’)

set_kind(‘binary ‘)

add_files(‘src/*。c ‘)

add_packages(‘tbox ‘,’ libuv ‘,’ vcpkg:ffmpeg ‘,’ brew : PCR 2/lib PCR 2-8 ‘,’ openssl ‘)

带有vcpkg:brew:conan:等命名空间的包会自动切换到对应的第三方包仓库下载集成,而tbox 1.6.1等默认库会默认使用xmake-repo官方仓库提供的包。

使用和集成完全一样,xmake会自动下载,编译,集成,链接。

有关远程包的依赖集成的更多细节,我们可以查看相关文档:远程依赖库集成和使用

同时,我们也欢迎更多人的参与,帮助完善C/C图书馆生态的建设,提供简洁一致的图书馆体验。相信C/C包管理和库生态并不比Rust/Go差。

更多的发行版安装支持

在新版本中,我们将xmake提交给了Ubuntu PPA源代码,所以除了现有的脚本安装方法之外,我们还可以通过apt快速安装xmake。

sudo add-apt-repository PPA : xmake-io/xmake

sudo apt更新

sudo apt安装xmake

同时,我们还将包提交给了Copr包管理仓库,这样我们就可以通过dnf在Fedora、RHEL、OpenSUSE、CentOS等发行版中快速安装xmake。

sudo dnf copr使能waruqi/xmake

sudo dnf安装xmake

入门课程

最近我们也推出了官方的xmake入门课程,xmake会帮你轻松搭建一个C/C项目,边学边做实验,快速学习Xmake的使用。

更新内容

新特性

#955:添加锯齿形空工程模板

#956:添加Wasm编译平台,支持Qt/Wasm SDK

将luajit升级到最新的分支版本2.1,并支持运行在mips64上的xmake

#972:添加依赖项_已更改()以简化相关文件的处理

#981:添加set_fpmodels()来抽象和设置数学/浮点编译优化模式

#980:为英特尔C/C和Fortran编译器添加完整的平台支持

#986:为16.8以上的msvc编译器添加了c11/c17支持

#979:为OpenMP添加跨平台抽象配置。add_rules(‘c .openmp ‘)

改进

#958:改进的mingw平台,增加对llvm-mingw工具链和arm64/arm架构的支持

添加add_requires(‘zlib~xxx ‘)模式可以支持同一个包同时安装多个配置,作为一个独立的包存在

#977:提高windows上find_mingw的检测

#978:改进工具链的标志顺序

改进的XCode工具链,支持macOS/arm64

Bugs 修复

#951:修复windows上对emcc (WebAssembly)工具链的支持

#992:修复文件锁偶尔无法打开

elbert
品牌