c++ xmake构建系统怎么用 c++现代化构建工具【指南】

发布时间 - 2025-12-30 00:00:00    点击率:
xmake构建C++项目只需三步:初始化、编写xmake.lua、执行命令;它跨平台、免手写Makefile/CMakeLists,原生支持C++20模块、PCH和包管理。

用 xmake 构建 C++ 项目,核心就三步:初始化项目、写好 xmake.lua、执行构建命令。它不依赖 CMake 的复杂语法,也不需要手写 Makefile,配置简洁、跨平台、原生支持现代 C++ 特性(如 C++20 模块、预编译头、包管理)。

快速上手:新建并构建一个 C++ 项目

在终端中执行:

  • xmake create -l c++ -t console myproject —— 创建一个带 main.cpp 的控制台项目
  • cd myproject
  • xmake —— 默认编译为 debug 版本,输出在 build/
  • xmake run —— 直接运行生成的可执行文件

整个过程无需手动配置编译器或链接选项,xmake 自动探测系统环境(GCC/Clang/MSVC)并选择合适标准(默认 C++17)。

配置 xmake.lua:声明目标与特性

这是 xmake 的核心配置文件,替代了 CMakeLists.txt。例如启用 C++20 并链接第三方库:

add_rules("mode.debug", "mode.release")

target("hello") set_kind("binary") add_files("src/*.cpp") set_languages("cxx20") -- 显式启用 C++20 add_packages("fmt", "nlohmann_json") -- 自动下载并链接

常用设置说明:

  • set_languages("cxx20")"c23":指定语言标准
  • add_cxxflags("-fconcepts"):添加特定编译器扩展
  • add_defines("NDEBUG"):定义宏
  • add_includedirs("include"):添加头文件搜索路径

集成现代开发需求:模块、PCH、包管理

xmake 原生支持 C++20 Modules 和预编译头(PCH),无需插件:

  • 模块支持:在 xmake.lua 中启用 add_rules("c++.modules"),然后用 add_files("src/module.ixx") 添加模块接口文件
  • 预编译头:用 add_headerfiles("src/stdafx.h") + set_pcheader("src/stdafx.h") 即可自动处理
  • 包管理:通过 add_requires("boost", {system = true}) 优先用系统包,失败则自动从 conan/vcpkg/xmake-repo 拉取

跨平台构建与持续集成友好

xmake 输出统一构建目录,支持多配置并行构建:

  • xmake -p windows -a x64 -m release:指定平台、架构、模式
  • xmake clean -a:清理所有平台构建产物
  • xmake project -k vsxmake:生成 Visual Studio 工程(仅用于编辑,不用于构建)
  • CI 中只需 xmake install --destdir=./output 即可打包可部署产物

所有命令行为一致,Windows/macOS/Linux 上脚本几乎不用修改。


# linux  # js  # json  # windows  # 工具  # mac  # ai  # c++  # macos  # win  # 配置文件  # cos  # lua  # 架构  # include  # 接口  # console  # visual studio  # 只需  # 三步  # 这是  # 也不  # 第三方  # 它不  # 创建一个  # 写好  # 可执行文件 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  如何快速搭建支持数据库操作的智能建站平台?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  个人摄影网站制作流程,摄影爱好者都去什么网站?  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  如何彻底删除建站之星生成的Banner?  ,交易猫的商品怎么发布到网站上去?  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  如何在万网自助建站中设置域名及备案?  Android自定义listview布局实现上拉加载下拉刷新功能  php json中文编码为null的解决办法  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  如何在IIS中新建站点并解决端口绑定冲突?  如何快速搭建高效服务器建站系统?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  iOS中将个别页面强制横屏其他页面竖屏  在线制作视频网站免费,都有哪些好的动漫网站?  如何制作一个表白网站视频,关于勇敢表白的小标题?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel怎么实现模型属性的自动加密  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Python结构化数据采集_字段抽取解析【教程】  轻松掌握MySQL函数中的last_insert_id()  如何在云指建站中生成FTP站点?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  网易LOFTER官网链接 老福特网页版登录地址  如何在IIS中新建站点并配置端口与物理路径?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  Laravel中的Facade(门面)到底是什么原理  实例解析angularjs的filter过滤器  活动邀请函制作网站有哪些,活动邀请函文案?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  常州企业网站制作公司,全国继续教育网怎么登录?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  javascript基于原型链的继承及call和apply函数用法分析