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持平。

官网:https://xmake.io/#/zh-cn/

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的根目录。

安装完成后的目录差不多是这样的:
XMake学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和XMake安装
MSYS2中又有多个子系统,我们用Mingw64就好。

Step2: 安装XMake

接下来使用以下命令用pacman安装XMake:

pacman -Sy mingw-w64-x86_64-xmake

XMake学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和XMake安装

安装完成后,用xmake命令就可以使用xmake了。
XMake学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和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学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和XMake安装
构建完成后可以用xmake run直接运行,或自己用其他方法运行。二进制文件会保存在build里面,然后根据平台进行分类。

XMake学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和XMake安装 XMake学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和XMake安装

原文链接:https://www.cnblogs.com/eriktse/p/17363730.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:XMake学习笔记(1):Windows(MSYS2)下MinGW-w64环境搭建和XMake安装 - Python技术站

(0)
上一篇 2023年4月30日
下一篇 2023年4月30日

相关文章

  • 面试最常问的数组转树,树转数组 c++ web框架paozhu实现

    刚毕业同学,找工作常被问 二维数组转树,树转二维数组 需要支持无限层级实现,如果你了解这个语言那么实现起来还要一番思考 c++ web框架 paozhu使用 需要实现数据库表数据到前台菜单实现,就是这种功能 二维数组转树,树转二维数组 保存时候树二维数组,展示时候树树状。 这个技术难点在于无限递归,这个树程序基本原理 现在看看c++怎么实现的,无限递归,家肯…

    C++ 2023年4月25日
    00
  • 用C++编写一个简单的发布者和订阅者

    摘要:节点(Node)是通过 ROS 图进行通信的可执行进程。 本文分享自华为云社区《编写一个简单的发布者和订阅者》,作者: MAVER1CK 。 @[toc] 参考官方文档:Writing a simple publisher and subscriber (C++) 背景 节点(Node)是通过 ROS 图进行通信的可执行进程。 在本教程中,节点将通过话…

    C++ 2023年4月27日
    00
  • C++/Qt网络通讯模块设计与实现(六)

    前面章节主要讲述网络通讯客户端的实现,各位小伙伴需认真阅读以及理解,理会其中的思想,有疑问的地方可及时给我私信,我都会非常认真地解答大家的疑惑。 C++/Qt网络通讯模块设计与实现(一) C++/Qt网络通讯模块设计与实现(二) C++/Qt网络通讯模块设计与实现(三) C++/Qt网络通讯模块设计与实现(四) C++/Qt网络通讯模块设计与实现(五) 这节…

    C++ 2023年4月18日
    00
  • Qt-FFmpeg开发-视频播放(5)

    音视频/FFmpeg #Qt Qt-FFmpeg开发-视频播放【软/硬解码 + OpenGL显示YUV/NV12】 目录 音视频/FFmpeg #Qt Qt-FFmpeg开发-视频播放【软/硬解码 + OpenGL显示YUV/NV12】 1、概述 2、实现效果 3、FFmpeg硬解码流程 4、优化av_hwframe_transfer_data()性能低问题…

    C++ 2023年4月17日
    00
  • 洛谷:P5716日份天数

    题目描述 输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。 输入格式 输入两个正整数,分别表示年份 \(y\) 和月数 \(m\),以空格隔开。 输出格式 输出一行一个正整数,表示这个月有多少天。 样例 #1 样例输入 #1 1926 8 样例输出 #1 31 样例输入 #2 2000 2 样例输出 #2 29 提示 数据保证 \(1583 \le…

    C++ 2023年4月24日
    00
  • 第一部分:介绍 Spdlog 日志库

    什么是 Spdlog 日志库 Spdlog 是一个 C++ 的日志库,它具有高效、易用、跨平台等特点。它可以写入到控制台、文件等输出目标,支持多种日志级别、多线程安全等功能,非常适合在 C++ 项目中使用。 Spdlog 日志库的历史和背景 Spdlog 日志库最初由 Gabi Melman 开发,它最初是为了解决 C++ 中的日志记录问题而创建的。在很长一…

    C++ 2023年4月18日
    00
  • L1-080 乘法口诀数列*(使用C++)

    L1-080 乘法口诀数列 分数 20 全屏浏览题目 切换布局 作者 陈越单位 浙江大学   本题要求你从任意给定的两个 1 位数字 a1​ 和 a2​ 开始,用乘法口诀生成一个数列 {an​},规则为从 a1​ 开始顺次进行,每次将当前数字与后面一个数字相乘,将结果贴在数列末尾。如果结果不是 1 位数,则其每一位都应成为数列的一项。 输入格式: 输入在一行…

    C++ 2023年4月18日
    00
  • 前缀和

      一、什么是前缀和 前缀和是一种预处理,用于降低查询时的时间复杂度。 举个例子:给定 n 个整数,然后进行 m 次询问,每次询问求一个区间内值的和。 如果用暴力写法,那每次询问都需要从区间左端点循环到区间右端点求和,时间复杂度较大。 这种时候就可以预先求出该数组的一维前缀和。 则 ans=s[R]-s[L-1] ,其中 L 和 R 是给定的区间。每次询问可…

    C++ 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部