1.如何评价xmake?
2.Xmake实现真·路径追踪path tracing
3.conan客户端的安装使用
4.Air780E|自定义固件|gcc|本地编译|Windows| win11|(3)、Air780E编译指南
5.wxsqlite静态编译 sqlite3加密 的简单方法
6.Xmake 新手教程
如何评价xmake?
xmake采用默认直接构建模式,无需依赖makefile和make工具,能自动处理头文件依赖,并开启多任务加速构建流程。内置构建、c 写字板源码打包、安装步骤,提供插件扩展机制,支持cmake、premake的makefile和vs工程生成,方便扩展与维护。已有多种内置实用插件。
简单工程无需makefile文件,xmake直接分析源码编译运行,适用于快速测试临时代码。复杂工程则采用xmake.lua描述文件,利用lua简洁易维护的语法进行维护。
经过数年迭代,xmake拥有了强大的包管理系统。支持远程编译、分布式编译,并内置本地缓存与远程缓存功能。
简言之,xmake集合了Make/Ninja、CMake/Meson、Vcpkg/Conan以及distcc、ccache等核心功能,实现高效、灵活的构建与包管理。
Xmake实现真·路径追踪path tracing
经过之前的尝试,CMake在模拟图形方面的局限性使其难以满足复杂的图形需求。因此,本文转向使用Xmake来构建一个真正的路径追踪渲染器,尽管其性能相较于C++略显逊色,但功能上并无缺失,尤其是在实现核心的DIFFUSE材质部分。
渲染器的封面图已通过x分辨率和次光线采样(SPP)由这个Xmake.lua文件生成,尽管CPU渲染耗时较长,但考虑到LUA语言的效率,这种速度是可以接受的。只需简单调整文件中的target设置,如尺寸和采样率,就能轻松调整输出效果。
值得注意的ftp在线源码是,较低分辨率和采样率会带来噪点,这是路径追踪渲染的正常现象。Xmake基于lua的表达能力,明显优于CMake的数学功能,展现出强大的灵活性和易用性。
Xmake的源代码已经上传至GitHub,供爱好者们下载和使用。我们应当支持像Xmake这样由国人作者开发、易用性和表达性更佳的国产软件,期待国内软件行业能持续进步,提升整体技术水平。
conan客户端的安装使用
本文旨在简要介绍Conan客户端的安装和基础使用,目标读者应具备Python3环境,熟悉Git基本操作及构建工具如vcpkg/xmake的基础知识。本篇内容不涉及具体C/C++工程创建或包创建,仅聚焦于客户端工具的快速上手。
成功安装Conan客户端后,用户将获得一个无界面的Python脚本工具,用于管理C/C++软件包的依赖关系。
安装过程顺利,版本为2.0.。
Conan客户端提供了命令行功能,用户可执行多种命令实现不同功能。以下为命令行概览:
Consumer类别命令:执行文件操作,管理本地缓存;配置Conan home环境;绘制依赖关系图;检查conanfile.py文件;安装需求;列出配方、版本或包;管理锁文件;管理档案;处理远程列表与认证;删除配方或包;搜索包;显示客户端版本。
Creator类别命令:安装依赖并调用build()函数;创建包;从远程服务器下载包(不安装);允许使用用户文件夹中的包;导出配方;从编译好的二进制创建包;从模板创建新配方和源代码;调用source()函数;测试包;上传包至远程服务器。
使用Conan客户端进行实践,如查询客户端版本、搜索特定包(如查询opencv最新版本4.5.5)并对比其他工具(如xmake的xrepo查询到的4.8.0版本);列出远程服务器;在源码目录下查询远程;列出配方或包;查看和获取profile文件路径。
本文旨在提供Conan客户端基础使用指导,包括安装、命令行功能概览及初步实践示例,以帮助用户快速上手并高效管理C/C++软件包依赖。
AirE|自定义固件|gcc|本地编译|Windows| win|(3)、AirE编译指南
AirE 编译指南(转载)
下载源码时,请使用 Git 并遵循指定目录结构。建议创建如下目录:D:\gitee\LuatOS、D:\gitee\luat\components\luatos-soc-,并确保目录内的 xmake.lua 和 project 文件正确到位。
安装 xmake,从官网下载,或从给出链接获取,安装时确保选择 PATH 选项。xy发卡网源码请留意,环境变量需重启后生效。
使用 xmake 自动下载 gcc 工具链。如果没有正常互联网连接,请手动下载并安装。
执行编译命令 "build luatos",此过程将输出编译进度。编译完成后,输出文件位于 out\luatos。注意:此文件是压缩形式,不等同于实际固件大小。
如遇警告信息,不必担心,属于正常编译流程。
了解并解决常见编译问题,提高代码稳定性和效率。
wxsqlite静态编译 sqlite3加密 的简单方法
针对需要在项目中集成sqlite3加密功能的需求,可选择wxsqlite作为解决方案。相较于其他推荐的工具,wxsqlite提供了更为简便的静态编译方式。
通过使用xmake作为包管理器,发现wxsqlite的集成相对简单,无需面对复杂的库文件与配置问题。选择wxsqlite的理由在于其提供了合并的C文件,只需将其包含至项目中即可。
首先,下载wxsqlite源码,并在对应的目录下找到需要的两个文件。这些文件是wxsqlite的关键组成部分,直接将它们加入到项目内即可实现功能集成。
在构建系统中,只需简单配置,添加必要的包含路径,即可实现wxsqlite的静态编译。整个过程简洁高效,无需面对繁琐的库文件管理和复杂配置。
在项目中直接包含头文件,使用wxsqlite的加密功能即可。对于设置选项,通常默认配置已能满足基本需求,无需额外调整。
使用wxsqlite后,可发现程序的执行文件大小略有增加,例如,unistd头文件源码加入SDL2后,执行文件大小增加了2M,加入skia后,增加了7、8M。这些额外的大小主要源自于所集成的额外依赖库。
针对不需进行图形绘制的情况,可选择使用SVG格式替代,通过SDL_image库处理SVG文件,同样可以实现所需的视觉效果。这种方法在简化代码的同时,也减少了依赖库的使用,进一步优化了项目的大小。
总体而言,通过wxsqlite实现sqlite3加密功能的过程简单明了,无需面对复杂的编译与配置问题。对于游戏项目而言,即使执行文件大小有所增加,对于整体的资源占用来说仍然属于较小的影响。
使用wxsqlite后,观察到编译后的执行文件大小相较于其他方法,保持在合理的范围内,通常在1M以上。这表明在集成wxsqlite时,已较好地控制了对项目资源的影响。
Xmake 新手教程
构建系统的文档常不太适合新手阅读,cmake、xmake和meson等官方教程过于简短,可能导致新手感到困惑。本文旨在为新手提供一个友好的指南。
新手通常了解C/C++的基础编译和链接,但并非对计算机科学全然无知。本文将围绕新手可能面临的常见问题和操作进行解答。
对于想要了解类似meson的指南,推荐阅读“Xmake常见问题解答”文章。
在安装xmake时,文档清晰说明了在各自平台上使用包管理器进行安装的方法。对于使用Windows系统的读者,有两点需注意:避免将xmake解压至包含其他软件的目录,以免在卸载xmake时误删其他软件;确保在命令行输入`xmake --version`来验证安装是否成功。
在构建hello world工程时,使用xmake命令`xmake create hello`可以生成模板。如果已经安装了C/C++编译器(如msvc、gcc、大盘风控源码clang),可以编译运行并看到"hello world"的输出。在Windows上,避免在Git自带终端执行xmake命令,推荐使用cmd或powershell,或先指定目标平台:`xmake f -p windows`。在Linux上,默认编译器为gcc,在Windows上为msvc,而clang在两个平台上皆可使用。根据需要在命令行切换工具链。
编写代码时,常用的文本编辑器有Visual Studio、Visual Studio Code和Clion。Visual Studio可以生成.sln工程文件,类似常规使用方式。Visual Studio Code支持高扩展性,只需安装xmake插件并选择合适的intellisense插件即可。对于使用clangd和codelldb的用户,通过`.vscode/settings.json`配置自动运行clangd,即可完成VSCode的配置。对于希望使用cpptools(微软的c++插件)的用户,请参阅官方文档。
官方演示视频提供了使用Clion与xmake交互的示例。
对于未提及的文本编辑器,请参考文档。国产编辑器edx也支持xmake,值得一试。
部署开发环境后,回顾生成的xmake.lua文件。通过`xmake f -m`切换构建类型,如`debug`或`release`。`add_rules("mode.debug", "mode.release")`使用了内置参数。根据构建类型设置不同的参数。工程需要至少一个构建目标,如`target("hello")`创建目标并命名。目标类型可以是静态库、动态库或可执行程序。`set_kind("binary")`对应可执行程序类型。除了这三种类型,`set_kind`还支持其他类型如`phony`、`object`、`headeronly`。`add_files`是一个强大的接口,通过`*`匹配文件后缀。
命令行操作如`xmake f -m debug`表示使用默认配置直接构建。完整命令包括配置和构建步骤。`xmake --help`输出所有命令行操作。在Actions中常用命令如`config`、`build`和`run`。输入`xmake config --help`查看更多子选项。
通用操作如合并命令(如`xmake -vD`)。`action`常用操作包括`xmake -r`和`xmake -j4`。包管理强大,支持自动下载依赖并编译安装。系统库稳定但版本固定,而非系统库直接拉取源码编译,提供更多自定义选项。使用`add_requires`和`add_packages`引入依赖。修改模板时,引入`fmt`库非常简单。如果不使用`-y`参数,则在下载依赖时需要手动确认。依赖下载在`config`阶段,正确编译测试包才算是成功安装。如果依赖下载失败,请参考文档设置代理。
系统库通常来自系统官方包管理器(如apt、pacman、homebrew),默认情况下xmake会先尝试从系统库中查找,如果没有才从远程下载。可以通过`add_requires`指定使用系统库。直接指定系统包的路径同样可行。Windows平台上的库可能需要预编译二进制,可以通过命令`xmake f -h`查看配置选项,如`--qt=`和`--cuda=`。对于`vulkansdk`,xmake内部已对此进行了支持,执行`xrepo search vulkansdk`即可查找对应的包。xrepo基于包名和描述进行模糊搜索,搜索不到的包可能需要贡献至官方或提出特征请求的issue。
非系统库(远程依赖)通过`xrepo`管理,支持更改包的编译配置,如将静态库编译为动态库。可以通过`configs`参数调整编译选项,如`debug`、`pic`、`lto`和`vs_runtime`。每个包都有自己的编译选项,如fmt支持非头文件方式编译,可使用对应`configs`编译为动态库。因为包可以用不同`configs`编译,所以xmake会生成唯一hash,确保同一版本同一包有多种编译产物。更多配置信息可通过`xrepo info`查看。
编写`xmake.lua`时,遵循lua语法,xmake的DSL(领域特定语言)方便用户使用。虽然有人可能对lua语言有偏见,但在大多数情况下,我们使用%的时间进行描述文件的编写,%的时间用于lua编程。xmake的API遵循官方命名规范,易于理解。描述域代码会被多次扫描,而脚本域代码仅执行一次。`on_load`等函数允许在脚本域编写代码,实现更复杂的功能。规则是xmake中最强大的工具之一,可以定制编译参数,根据目标名称判断是否启用特定库。
一个完整的项目目录结构可能如下:根目录、`xmake.lua`、`xmake/xmake.lua`、`xmake/option.lua`等。把构建选项集中在一起,如通过`--test`启用或关闭测试。`xmake/package.lua`专门管理gtest库的安装。单元测试方面,虽然官方没有直接支持,但可以参考模板实现。为了发布软件,通常需要重写`on_install`脚本,并使用`upx`进行压缩。
总之,xmake为新手提供了一个灵活且易于使用的构建系统,从安装到配置,再到编写`xmake.lua`文件,以及实现更高级的功能如单元测试和软件发布,xmake都能提供相应支持。通过本文指南,希望新手能够快速上手并高效使用xmake。
游戏制作的窄门:构建mini游戏引擎 - 0 - 概述、构建工程,以及开始的一切
自我意识的溢出,毕业后的生活充斥着复杂与不确定性,社会与企业的缩紧带来了野心的收缩,工作与项目的变故让人陷入茫然。在这样的背景下,对于创造意义的渴望再次涌现,于是决定重启未完的引擎工程,以期在编程世界中找回自我。
这个简陋的引擎工程始于研究生时期,彼时使用学校的mini engine,感觉不尽人意。决定构建一个小型游戏引擎,然而计划在拖延中停滞。临近毕业,出于丰富简历的功利性考量,开始跟随Cherno的Engine教程。工作后,引擎开发再次搁置,直到现在才真正投入。通过知乎上的教程和博客,开始记录自己的引擎构建过程,不断学习和完善。
本系列旨在记录博主构建游戏引擎的学习和进步,专注于实现基本功能和特定方向的深入探索。构建一个轻量、简洁的引擎,虽然可能不全面,但在某些方面有所成就。引擎命名Novl Engine,主要用于游戏开发,尤其是叙事方向。
在引擎构建之初,参考资源包括优秀的教程、著作以及开源项目,以获得现代引擎架构和先进技术的了解。对于大型商业引擎源码的探索并不推荐,因其复杂性可能影响学习效率。游戏引擎架构分为平台层、核心层、资源层和功能层,以及工具层。在项目中采用CMake和Xmake作为构建系统。
构建工程的第一步是搭建hello world,使用CMake和Xmake实现跨平台构建。在Novl Engine中,计划集成物理和音频中间件,如Jolt和FMOD,以完善引擎功能。随着项目的进展,将详细讨论中间件的集成和其他依赖库的导入。
通过本系列,博主将分享引擎构建的全过程,包括遇到的挑战、学习的经验和代码实现。尽管路途漫长且可能充满曲折,但目标是逐步完善引擎,以期在游戏开发中发挥作用。对于游戏引擎架构的理解和实践,将逐步展开,最终形成一个功能丰富、易于使用的工具。
A Tour of xmake - . 测试发布
为了确保工程的正式发布,xmake推荐设置工程信息,例如版本号。这将自动生成配置变量如${ VERSION}、${ VERSION_MAJOR},并考虑了Git版本管理的特性。在Windows系统中,可以通过编写resource文件并加入工程中来给产生的二进制和动态库添加版本信息。
以google test框架为例,构建一个C++库结构。在mylib.cpp中定义了函数,mylib.def文件用于生成动态链接库,并在不声明__declspec(dllexport)的情况下实现。使用xmake中的add_files接口将mylib.def加入项目。测试文件夹内包含测试文件,add.cpp和distract.cpp分别进行了测试。xmake.lua文件用于配置测试过程,如设置运行命令和分组。测试后,若未发现问题,即可准备安装和发布。
安装过程遵循一般约定,将二进制文件、库文件、头文件等分别存放于bin、lib、include目录。xmake命令用于安装项目,指定安装路径,区别于cmake等构建系统。执行安装命令后,目标生成的文件将按约定路径安装。
头文件的安装使用add_headerfiles语句,匹配指定目录下的所有.h文件。通过设置prefixdir选项,可以保持目录结构或将其放入特定子目录。add_headerfiles语句不仅用于安装,部分IDE项目生成器还用于项目可见性设置。如果仅用于生成项目,希望避免安装头文件,可以使用add_headerfiles(, { install = false})选项。
生成配置文件是导出给使用其他构建系统的项目使用的关键步骤。xmake提供pkg-config和cmake配置文件的生成,用于将目标配置为其他构建工具可识别。根据构建工具文档使用这些配置文件。
对于头文件之外的安装文件,使用add_installfiles接口。它与add_headerfiles的区别在于,文件将直接安装到指定目录下,而非默认的include文件夹。例如,可以用于安装文档或其他数据文件。
当目标的库和二进制文件的存放路径不符合约定,或有特定的安装过程需求时,可以使用on_install语句重载安装过程。这允许根据安装目录调整文件位置,例如将生成的库文件安装到自定义的mylib文件夹。若需要深入理解xmake内部实现,可以通过搜索xmake源代码或在线编辑器查找相关实现代码。