简单的 C/C++ 项目自动化构建--Xmake

2023-11-15

Xmake 简介

https://xmake.io/#/

XMake是一个基于Lua的轻量级跨平台自动构建工具,支持在各种主流平台上构建项目。

Xmake = Build backend + Project Generator + Package Manager

它跟cmake、automake、premake有点类似,但是机制不同,它默认不会去生成IDE相关的工程文件,采用直接编译,并且更加的方便易用 采用lua的工程描述语法更简洁直观,支持在大部分常用平台上进行构建,以及交叉编译。

已经有强大的cmake了,既生瑜何生亮,xmake好在哪?

相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好。短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。

能够使用它像 Make/Ninja 那样可以直接编译项目,也可以像 CMake/Meson 那样生成工程文件,另外它还有内置的包管理系统来帮助用户解决 C/C++ 依赖库的集成使用问题。

目前,Xmake 主要用于 C/C++ 项目的构建,但是同时也支持其他 native 语言的构建,可以实现跟 C/C++ 进行混合编译,同时编译速度也是非常的快,可以跟 Ninja 持平。

xmake的理念:真正的一致维护, 真正的一键编译。

构建行为的一致性: 不管你的项目是否有库依赖,工具依赖,只需要执行一个xmake命令,即可编译通过。
项目维护的一致性: 不管你的项目是在windows上用,还是给linux, iphone, android上用,都只需要一份xmake.lua维护项目即可。
而cmake还需要生成额外的第三方IDE工程文件,即使cmakelist.txt相同,但是构建、维护体验上对用户来讲都不可能保证完全一致,毕竟还受限于vc/make此类工具。

项目地址:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)


简单的 C/C++ 项目自动化构建--Xmake 的相关文章

  • 不同文件中的相同静态变量[重复]

    这个问题在这里已经有答案了 HI 欢迎大家回答这个问题 Q1 如果 File1 c 包含 static int a File2 c 包含 static int a 如果这两个文件是同一项目的一部分 如果是的话 编译会抛出任何错误吗 如果它不
  • 为什么我需要显式编写“auto”关键字?

    我正在从 C 98 转向 C 11 并且已经熟悉了auto关键词 我想知道为什么我们需要明确声明auto编译器是否能够自动推导类型 我知道 C 是一种强类型语言 这是一条规则 但如果不显式声明变量就不可能实现相同的结果auto 放弃显式的a
  • Windows 窗体中的切换开关控件

    我正在设计一个拨动开关控制使用CheckBox 但目前我的控件只能画一个圆圈 如何绘制如下图所示的圆形形状 以及如何根据控件的值更改圆圈的位置以表示选中和未选中的状态 如下图所示 这是我的代码 public class MyCheckBox
  • 在 TPL Dataflow 中,是否可以在创建块之后但使用之前更改 DataflowBlockOptions?

    有效果吗 我想推迟设置 ExecutionDataflowBlockOptions SingleProducerConstrained 属性 直到我准备好将网络链接在一起 因为 我想将创建块及其语义与将网络及其语义链接在一起分开 但据我所知
  • 不要覆盖 Azure Blob 存储

    我有一种将文件添加到 Azure Blob 存储的方法 问题是我试图指定一个条件 在该条件下它不会覆盖 blob 而只是添加到其中 我正在尝试使用参数访问条件 但是 VS 说这个方法不能采用两个参数 async void archiveNe
  • 有什么办法可以让这个 C# 代码更快吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在读取一个大文件 X12 并解析其中的信息 我有两个瓶颈功能 我似乎无法解决 read line 和 get element 有什
  • 改进绩效反思 - 我应该考虑哪些替代方案?

    我需要动态地设置对象上的一堆或属性的值 将其称为传输对象 将在短时间内创建相当数量的此类传输对象并设置其属性 我想避免使用反射 还有其他选择吗 如果是的话 有我可以查看的示例实现吗 Use Delegate CreateDelegate h
  • FxCop 和 GAC 疯狂

    当我尝试分析依赖于模式和实践 企业库数据 以及其他 2 0 0 0 的项目时使用 FxCop FxCop 抱怨它不能 定位程序集引用 即使正在分析的应用程序 dll 是根据其编译的此版本及其在 GAC 中 如果我浏览到 GAC 尝试选择相同
  • 隐式转换和编译器的不同行为

    Motivated by this question https stackoverflow com q 51972738 5800831 I created the following code struct X X int struct
  • autofac 中的条件组件注册

    是否可以根据其他组件的状态有条件地注册组件 就像是 ContainerBuilder RegisterConditionally
  • 调用 Console.ReadLine() 的方法的 C# 单元测试

    我想为名为的类的成员函数创建一个单元测试ScoreBoard它存储了一场比赛中排名前五的球员 问题是我为 SignInScoreBoard 正在呼叫Console ReadLine 这样用户就可以输入他们的名字 public void Si
  • 如何声明返回相同类型的 Func Delegate 的 Func Delegate?

    我想编写一个方法 该方法可以完成一些工作 并最终返回另一个与原始方法具有相同签名的方法 这个想法是根据前一个字节值顺序处理字节流 而不进行递归 通过这样调用它 MyDelegate executeMethod handleFirstByte
  • 将 jstring 转换为 QString

    我正在调用一个返回字符串的 Java 函数 QAndroidJniObject obj QAndroidJniObject callStaticObjectMethod
  • 在 C++ 中运行 python [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个用 C 编写的应用程序和一个测试系统 也是用 C 编写的 测试系统非常复杂并且很难改变 我只想做一些小的改变 我的班级是这样的
  • 如何获取 EF 中的实体更改增量?

    我只需要获取已更改字段的列表 数据存储区是 ssce 因此没有可用的触发器 EF 是否支持获取列表或构建通用组件 根据上下文的类型和生成的实体 您可以通过多种不同的方式来完成此操作 如果对象继承自 Entity 或 POCO 您可以使用Ob
  • 使用智能指针在大型对象集合中创建多个索引

    我正在为一个大型对象集合创建多个索引 即使用不同的键 对象可以改变 集合可以缩小和增长 到目前为止我的想法 保留某种指向对象的指针的多个集合 使用set代替map以获得更好的封装 使用 unordered set 可以很好地扩展大型数据集
  • 如何使用 C# 以编程方式识别对方法的引用数量

    我最近继承了需要一些修剪和清理的 C 控制台应用程序 长话短说 该应用程序由一个包含超过 110 000 行代码的类组成 是的 单个类中有超过 110 000 行 当然 该应用程序是我们业务的核心 全天候运行更新动态网站上使用的数据 尽管我
  • 如何通过反射获取透明代理的属性值?

    我的代码接收透明代理而不是原始实例 虽然这var type obj GetType 产生原始类的类型 下面的代码抛出TargetException 对象与目标类型不匹配 var value property GetValue obj nul
  • 我的 C 程序无法运行,并显示“无法执行二进制文件:Exec 格式错误”

    我刚刚从 C 开始 我试图编译下面的代码并执行它 但出现错误 也在运行sizeBS 或数据堆栈中没有显示任何内容 include
  • 阅读《Effective、MoreEffective 和Effective Modern C++(和 STL)》的首选顺序是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 据我所知 More effective C 是 Effective C 的扩展 而 Effective Modern C 则专注于 C 11 和

随机推荐

  • Android中Activity的开启Activity页面的跳转详解

    android开启和关闭activity 1 在android 中我们要开启和关闭activity按钮首先就要创建两个activity 2 然后在他们的布局文件中添加页面 3 然后使用java代码编写程序实现页面的开启和关闭 在MainAc
  • python 爬虫 验证请求 requests模块中的auth参数可以实现

    import requests 导入requests模块 from requests auth import HTTPBasicAuth 导入HTTPBasicAuth类 定义请求地址 url http sck rjkflm com 666
  • C语言基础 - char字符串数组的概念和定义

    在c语言中 字符串是以 字符数组 存储的 include
  • 【Xilinx Vivado时序分析/约束系列8】FPGA开发时序分析/约束-FPGA数据中间采样、边缘采样PLL时序优化实操

    目录 时序分析实操 分析数据手册 实验工程 输入部分 输出部分 顶层部分 设计层次 综合布线 时序约束 时钟约束 输入延时约束 分析输入延时的约束如何设计 数据中间采样 最小延时约束 最大延时约束 结果分析 数据边缘采样 添加input d
  • java基础补充

    Scanner类的使用 从键盘获取不同类型的变量 需要使用Scanner类 具体实现步骤 1 导包 import java util Scanner 2 Scanner的实例化 Scanner scan new Scanner System
  • c++ 优先队列(priority_queue)

    优先队列的本质是堆 但它具有队列的所有操作特性 与普通队列不同的地方就是出队的时候按照优先级顺序出队 这个优先级即最大堆或最小堆的规则 即大的为top优先出队或小的为top优先出队 在队列的基础上加了个堆排序 以O log n 的效率查找一
  • Qt for iOS:将ipa安装包发布到App store

    终于到了这一步了 我希望你阅读这篇文章的时候 已经按照顺序阅读了我之前的文章 Qt for iOS 基础环境搭建 Qt for iOS 真机调试环境部署 Qt for iOS 申请发布证书 App配置文件 Qt for iOS 从Qt工程到
  • spring boot 项目开发常用目录结构

    在spring boot开发中一些常用的目录划分 一 代码层结构 根目录 net csdn 1 启动类 CsdnApplication java 推荐放在根目录net csdn包下 2 实体类 domain A net csdn domai
  • delphi操作png的单元pngimage.pas包括引用的ZlibExApi.pas和 PngLang.pas

    有需要的可以去这里下载源码 http download csdn net detail sushengmiyan 4662715 delphi操作png是在delphi2009版本之后 网上这么说的 于是乎 我找了源码来共享 希望对大家有帮
  • 【软件工程师学硬件】之 开关电源(4) —— 初识Viper12a

    Viper12a是一个很不错的电源芯片 至少我是这样认为的 当然了 肯定有很多其他的很好的电源芯片 我之所以以Viper12a为例 一方面是其电路简单 便于说明问题 其次它用得比较广 什么电磁炉 影碟机上面电源芯片大部分都是它 其三价格也比
  • 初识 python - 数组及其简单使用(一)

    目录 1 创建数组 2 数组的属性 3 数组的运算 4 查看数组 切片 5 特殊构建数组
  • 稳压芯片TPS54531的设计和分析

    2020 9 5补充 最终5 28V转3 3V的输出电路可以推算出来 输入的电压下限为4V R1为330K R2为160K 输出的电压为3 3V R5为10K R6为3 3K 输出的电流0 1A L1为47uH 根据相位增益进行补偿 C6为
  • 二叉排序树与平衡二叉树(BST&AVLT)

    平衡二叉树的一些操作 平衡二叉树相对于二叉排序树来说是二叉排序树的一个优化版 避免了二叉排序树中的极端情况 想更好的理解还是要结合图片自己动手做做QwQ 这里写的是双平衡 双旋转版 并非LL RR LR RL四种特殊情况单独处理 平衡二叉树
  • STM32速成笔记—中断

    文章目录 一 什么是中断 二 中断的相关概念 2 1 中断优先级 2 2 中断嵌套 2 3 中断服务函数 2 4 中断标志位 三 外部中断EXIT 四 中断程序配置 4 1 设置中断分组并使能中断 4 2 初始化EXIT 4 3 编写中断服
  • twinbasic开发浏览器edge webview2包装

    twinbasic开发浏览器edge webview2包装 QQ 2776478814 有需要写制浏览器控件 写爬虫 数据采集 自动输入的可以找我
  • 爬取嘉兴市人才网即时招聘信息并写入文本TXT完整案例

    上一次讲到爬取嘉兴市人才网即时招聘栏目输出每一页的标题链接 点此查看 这次接着上一次的内容把完整的爬虫代码讲解完 再次声明 代码仅供技术学习交流 不作其他用途 思路 接着上一篇文章 接下来就是循环遍历列表中的每一个url 这个url指的就是
  • 爬虫入门第10课:实现代理池的API模块

    爬虫学习知识点及案例篇 汇总 爬虫入门第1课 代理池概述及开发环境 爬虫入门第2课 代理池的设计 爬虫入门第3课 实现代理池思路 爬虫入门第4课 定义代理IP的数据模型类 爬虫入门第5课 实现代理池工具模块 爬虫入门第6课 实现代理池的校验
  • AtCoder Beginner Contest 203 Pond(二分+二维前缀和)

    样例输入 样例1 3 2 1 7 0 5 8 11 10 4 2 样例2 3 3 1 2 3 4 5 6 7 8 9 样例输出 样例1 4 样例2 5 据说这个题用对顶堆维护被卡了 先挂一手官方该题题解链接 大体思路 二分 将原矩阵根据二分
  • 企业和软件工程师外包公司合作有哪些好处呢

    互联网技术的快速发展和普及也加速了企业信息化进程步伐 目前很多企业在加快信息化建设过程中遇到软件人才资源配置问题 正面临如下困境 临时及灵活的用人需求 招聘团队对专业软件开发人员招聘困难 内部软件人力不足 没有招聘编制 软件技术人员用工及管
  • 简单的 C/C++ 项目自动化构建--Xmake

    Xmake 简介 https xmake io XMake是一个基于Lua的轻量级跨平台自动构建工具 支持在各种主流平台上构建项目 Xmake Build backend Project Generator Package Manager