XMake学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和XMake安装
以前写的C++基本都是C with STL,大多是面向过程的算法题,或者比较小的项目,然后经常报各种编译错误(对编译原理不熟),经常把人搞到崩溃,搞不懂构建、链接之类的东西。
现在开始记录一下XMake的学习笔记,记录一些学习过程中踩的坑,在这篇文章,你将学习到Windows下利用MSYS2进行Mingw-w64环境搭建和XMake安装,并用Xmake构建一个项目,编译一个HelloWorld程序。
作者:Eriktse
简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗易懂的方式讲解算法!️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)
阅读原文获得更好阅读体验:https://www.eriktse.com/algorithm/1121.html
XMake简介
一个由国人开发的C++构建工具,真的很好用!yyds。
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。
虽然,简单易用是 xmake 的一大特色,但 xmake 的功能也是非常强大的,既能够像 Make/Ninja 那样可以直接编译项目,也可以像 CMake/Meson 那样生成工程文件,还有内置的包管理系统来帮助用户解决 C/C++依赖库的集成使用问题。
目前,xmake主要用于C/C++项目的构建,但是同时也支持其他native语言的构建,可以实现跟C/C++进行混合编译,同时编译速度也是非常的快,可以跟Ninja持平。
Step1:安装MSYS2
MSYS2是一个Windows平台上的GNU/Linux-like环境,可以用于开发和调试Unix/Linux软件。MSYS2使用pacman软件包管理器,可以方便地安装和管理软件包。它也提供了一个类似于Bash的shell,支持大多数Unix/Linux命令和工具。MSYS2还提供了交叉编译工具链,可以方便地在Windows上编译和构建Linux软件。
直接到官网https://www.msys2.org/ 找到 installer下载,然后安装到一个容易找到的路径,比如我安装到D:\msys2目录下,接下来你就可以假想这个目录是一个linux的根目录。
安装完成后的目录差不多是这样的:

MSYS2中又有多个子系统,我们用Mingw64就好。
Step2: 安装XMake
接下来使用以下命令用pacman安装XMake:
pacman -Sy mingw-w64-x86_64-xmake

安装完成后,用xmake命令就可以使用xmake了。

如果提示
xmake命令没有找到,那就是环境变量的问题,用下面的方法来修改:
推荐在etc/profile.d里新建一个env.sh,里面写
export \(PATH=\)PATH:D:/msys2/mingw64/bin
完事后用指令source /etc/profile来刷新配置,再用echo $PATH来查看环境变量是否添加成功。
为了在VS Code的终端中使用xmake命令,还需要将D:\msys2\mingw64\bin加入到Windows的环境变量中。
注意,这里如果你发现改了环境变量,在vscode中还是不能用xmake命令,你需要重启一下vscode......这是一个小坑,当时困惑了好久。
Step3: 运行Hello World
新建一个HelloWorld文件夹,在该文件夹下新建一个文件xmake.lua,里面编写以下内容:
set_config("plat", "mingw")
set_config("sdk", "D:/msys2/mingw64")
target("HelloWorld")
-- 设定为二进制文件,也就是windows下的exe文件
set_kind("binary")
-- 将src目录下的所有cpp一起编译
add_files("src/*.cpp")
在src/HelloWorld.cpp中写一个简单的程序:
#include <iostream>
signed main()
{
std::cout << "Hello, World!" << '\n';
return 0;
}
然后在终端中执行命令(注意在项目根目录执行):
xmake

构建完成后可以用xmake run直接运行,或自己用其他方法运行。二进制文件会保存在build里面,然后根据平台进行分类。

XMake学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和XMake安装的更多相关文章
- Windows 7 下 PHP 开发环境搭建(手动)
Windows 7 下 PHP 开发环境搭建 1.说明 做开发的都知道一句话,就是“站在巨人的肩膀上”.确实现在打开浏览器随便一搜很多一键安装PHP环境的软件,比如wamp.xampp.AppServ ...
- Windows系统下Android开发环境搭建
“工具善其事,必先利其器”.要想学好Android,搭建好Android开发环境是一个良好的开端. Windows系统下Android开发环境主要有4个大的步骤.分别是: 1.JDK的安装 2.ecl ...
- TypeScript学习笔记(一):介绍及环境搭建
官网 TypeScript目前还在快速的发展中,当前的版本是1.6,有关TypeScript更多的信息可以在其官网中获取. http://www.typescriptlang.org/ 什么是Type ...
- php学习笔记1——使用phpStudy进行php运行环境搭建与测试。
1. 新手第一步还是使用phpStudy搭建一下windows下的php环境,并测试.如下: http://jingyan.baidu.com/article/3c343ff7067eff0d3679 ...
- HTML5学习笔记<五>: HTML表单和PHP环境搭建
HTML表单 1. 表单用于不同类型的用户输入 2. 常用的表单标签: 标签 说明 <form> 表单 <input> 输入域 <textarea> 文本域 < ...
- Java 学习笔记 第一章:Java语言开发环境搭建
第一章:Java语言开发环境搭建 第二章:常量.变量和数据类型 第三章:数据类型转换.运算符和方法入门 1.Java虚拟机——JVM JVM(Java Virtual Machine ):Java虚拟 ...
- 零基础Windows + JAVA(jdk)环境搭建以及eclipse安装和使用
关于java的环境搭建其实网上有很多种,下面小编就自己来操作一下吧~ java的环境搭建最主要的就是jdk的安装及环境变量设置,好了,来看看安装步骤: 一.JDK的下载与安装(java安装包) JD ...
- OpenCV2学习笔记01:Linux下OpenCV开发环境的搭建
个人已经厌倦了Windows下的开发方式,于是决定转到Linux平台上来,当然我也知道这个转变会很艰辛,但是我还是要坚持.所以,后面的所有开发我都会基于Linux和Qt,先从开发环境的搭建开始做起,当 ...
- Cocostudio学习笔记(1) 扯扯蛋 + 环境搭建
转眼七月份就到了,2014已经过了一半,而我也最终算是有"一年工作经验"了,开心ing. 回想这一年Cocos2dx的游戏开发经历,去年下半年重心主要在游戏的逻辑上,而今年上半年重 ...
- React学习笔记-1-什么是react,react环境搭建以及第一个react实例
什么是react?react的官方网站:https://facebook.github.io/react/下图这个就是就是react的标志,非常巧合的是他和我们的github的编辑器Atom非常相似. ...
随机推荐
- centos /linux 修改目录或文件权限
修改目录权限chmod 777 /var/home/userid/cc 修改目录及子目录权限chmod -R 777 /var/home/userid/cc 修改文件权限chmod 777 index ...
- NFS存储安装配置
一.NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种, 它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客 户 ...
- python之pyqt5-第一个pyqt5程序-图像压缩工具(2.0版本)-小记
(如想转载,请联系博主或贴上本博地址) 此篇为上一篇pyqt5图像压缩小工具改良版.因为比较简单,下面直接贴上代码. 效果图: # -*- coding: utf-8 -*- # Form imple ...
- excel表格常用函数技巧大全 excel中最常用的30个函数分享
excel中最常用的30个函数: 一.数字处理 1.取绝对值 =ABS(数字) 2.取整 =INT(数字) 3.四舍五入 =ROUND(数字,小数位数) 二.判断公式 1.把公式产生的错误值显示为空 ...
- 生产环境Java应用服务内存泄漏分析与解决
有个生产环境CRM业务应用服务,情况有些奇怪,监控数据显示内存异常.内存使用率99.%多.通过生产监控看板发现,CRM内存超配或内存泄漏的现象,下面分析一下这个问题过程记录. 服务器配置情况: 生产服 ...
- CURL 常用命令
参考博客:https://blog.csdn.net/wangpengfei163/article/details/80900391
- 坚叔:让科幻片的概念变成产品丨编程挑战赛 x 嘉宾分享
前言 本文基于资深创业者@坚叔在「RTE 2022 创新编程挑战赛」宣讲活动中分享内容二次整理. 嘉宾简介:陈坚(坚叔),国内二次元 AR/VR 资深创业者,国内第一批空间虚拟数字化从业人员,获得政府 ...
- 【CS231n assignment 2022】 vscode 环境配置
文章目录 前言 一.安装 Python 二.安装 vscode 三. cs231n 作业下载 四.配置 vscode 五.虚拟环境包安装 六.数据集 前言 今年成功考上了本校的研究生,要开始进入研究生 ...
- Gateway 网关
Spring Cloud Gateway 作为 Spring Cloud框架的第二代网关,在功能上要比 Zuul更加的强大,性能也更好.随着 Spring Cloud的版本迭代,Spring Clou ...
- Kafka为什么比其他消息中间件快
更多内容,前往 IT-BLOG 无论 Kafka 作为 MQ 也好,还是作为存储层也罢,无非就是两个功能,一是 Producer 生产的数据存到 Broker,二是 Consumer 从 Broker ...