上面是一个开发中的经典问题场景,发生的原因通常是:开发者工作机上的某些依赖项没有安装在测试或者客户环境中,导致程序无法运行或者报错。

如何有效地避免这个尴尬的场景呢?那就需要一个持续的、可复用的自动构建流程,这样会促使团队保证他们的软件在 IDE 和开发者工作机之外也能够编译并运行基本的单元测试集。

**今天给大家介绍一款非常好用的 C/C++ 项目构建工具 —— Xmake。**目前它已经在 Github 收获了 2.9K star、300+ fork,并且处理了 900+ issues、5400+ Commits,star 数也超过了大部分同类构建工具,逐渐逼近 cmake。同时, Xmake 在易用性上完全赶超 cmake,对新手非常友好,短时间内就能入门。

Xmake 简介

**友好 —— **xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。

**强大 —— **虽然,简单易用是 xmake 的一大特色,但 xmake 的功能也是非常强大的,既能够像 Make/Ninja 那样可以直接编译项目,也可以像 CMake/Meson 那样生成工程文件,还有内置的包管理系统来帮助用户解决 C/C++依赖库的集成使用问题。

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

Xmake 的****安装

使用curl

bash <(curl -fsSL https://xmake.io/shget.text)

使用wget

bash <(wget https://xmake.io/shget.text -O -)

使用powershell

Invoke-Expression (Invoke-Webrequest 'https://xmake.io/psget.text' -UseBasicParsing).Content

简单的工程描述

target("console")set_kind("binary")add_files("src/*.c")

包依赖描述

构建工程

$ xmake

运行目标

$ xmake run console

调试程序

$ xmake run -d console

入门教程

Xmake 的作者在实验楼发布了一门 Xmake 入门和进阶课程,以边学边练习的方式快速学习 xmake 的使用,带你轻松构建 C/C++ 项目。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QatzWWnj-1603707967657)(https://upload-images.jianshu.io/upload_images/226662-59cd7e49f141404e?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

课程以循序渐进的方式,带你入门和进阶 xmake,从最基础的编译配置,到复杂项目的定制化组织和维护,在课程最后几节,我们还通过实战的方式,一步步带你体验第三方 C/C++ 项目的移植编译,以及 vscode/xmake 集成环境的可视化编译操作流程。最后一节实验中,我们还会讲解如何使用 xmake 和 vscode 去编译开发基于 Qt 的应用程序。

你将学到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NLMgSwnw-1603707967670)(https://upload-images.jianshu.io/upload_images/226662-2c4f82314c6e8796?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南相关推荐

  1. python入门指南txt-十分钟搞定 C/C++ 项目自动化构建 —— Xmake 入门指南

    上面是一个开发中的经典问题场景,发生的原因通常是:开发者工作机上的某些依赖项没有安装在测试或者客户环境中,导致程序无法运行或者报错. 如何有效地避免这个尴尬的场景呢?那就需要一个持续的.可复用的自动构 ...

  2. JeecgBoot 单体升级微服务快速方案(十分钟搞定)

    JeecgBoot 单体升级微服务方案(十分钟搞定) 当前系统分为system.demo 等模块,现有需求把每个模块单独启动作为微服务应用,故而推出新版boot[20200812beta],支持快速切 ...

  3. JAVA微信企业付款到零钱(十分钟搞定),附完整DEMO下载

    最近帮朋友做了一个简单的微分销系统,实现从企业付款到零钱分润的功能,简单记录一下微信提现功能开发的流程, 主要就是按规则封装好请求参数调用微信接口,涉及一些签名校验: A.接口流程 获取用户OPENI ...

  4. java 分组报表_【Java】分组报表怎么做,积木报表十分钟搞定!

    首页 专栏 java 文章详情 0 分组报表怎么做,积木报表十分钟搞定! scott发布于 今天 12:24 报表需求 某大型超市需要做一张年度区域销售统计报表 展示2019和2020年度各地区每月的 ...

  5. java零钱换整程序_JAVA微信企业付款到零钱(十分钟搞定),

    JAVA微信企业付款到零钱(十分钟搞定), 最近帮朋友做了一个简单的微分销系统,实现从企业付款到零钱分润的功能,简单记录一下微信企业付款到零钱的开发过程, 主要就是按规则封装好请求参数调用微信接口,涉 ...

  6. 逗号后面统一加空格_十分钟搞定字幕,教你做加字幕的“快手菜”

    平台上许多同学有疑问:做视频是否有加字幕的必要呢? 其实除了外语需要翻译.语速过快加字幕方便理解.普通话不标准等情况之外,还是建议有余力的同学可以加上字幕,提升用户的观看体验. 那么问题来了,存在以下 ...

  7. 全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析

    全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析 废话先说一点,算了.直接进入正题吧. 用例子说话: JSON数据: string json: " {" ...

  8. mfc远程连接mysql数据库连接_MFC连接mysql数据库(十分钟搞定)

    最近要做一个大作业,需要用到数据库,sql server装了两次都失败,遂弃暗投明,用mysql,虽然我从来没有接触过,数据库么,一通百通的,5分钟就熟悉了.问题的关键是要用MFC连接mysql数据库 ...

  9. 支付宝上线新功能:去这个国家入境十分钟搞定!

    11月15日,作为"新马泰"旅游胜地的泰国是出国旅游热度最高的几个国家之一.据统计,2018年中国游客赴泰旅游突破了1054万人,比2017年上升了7.4%.2018年赴泰旅游的中 ...

最新文章

  1. poj 1698 Alice's Chance 最大流
  2. Oracle_11g_R2安装手册(图文教程)
  3. 2019年湘潭大学程序设计竞赛(重现赛)补题:F.Black White(尺取法)
  4. python回到本次循环开头_Python中,当一个while循环判断为false,结束这个循环的时候,怎么进入到下一个循环中?...
  5. C语言课后习题(66)
  6. Python分析一下双色球,中大奖指日可待!
  7. [转载] Python正则表达式(含正则表达式速查表)
  8. 【CS229】向量化
  9. wsdl 架构验证警告:来自命名空间_Let it go: DARTS 神经网络可微架构搜索 笔记
  10. spark安装以及hive on spark和spark on hive 的配置
  11. android view translateanimation,Android:有没有办法在TranslateAnimation之后获得View的最新位置?...
  12. python列表创建操作_python列表操作
  13. HARK学习(八)--LoadSourceLocation
  14. 计算机学校校歌,【2018十大最受欢迎高校校歌】_最受欢迎的十大高校校歌
  15. C语言中fseek函数
  16. MQTT网关如何接入物联网平台?
  17. 百度定位实时获取位置android,通过百度定位sdk获取实时位置
  18. 华师大 OJ 2876
  19. Ubuntu配置网络代理
  20. MIT计算机专业本硕连读几年,麻省理工一般读几年?

热门文章

  1. 题解-bzoj4221 JOI2012kangaroo
  2. CentOS 7下安装Logstash ELK Stack 日志管理系统(上)
  3. Android中利用ant进行多渠道循环批量打包(一)
  4. HDU-6599 I Love Palindrome String(回文自动机+字符串hash)
  5. acwing 3 完全背包
  6. InfluxDB中文文档
  7. 移动端页面适配解决方案
  8. 【论文阅读-Bidding】《Feedback Control of Real-Time Display Advertising》
  9. Linux-安装FFmpeg
  10. [Mysql]备份同库中一张表的历史记录 insert into ..select