以前寫的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
命令沒有找到,那就是環境變數的問題,用下面的方法來修改:
推薦在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裡面,然後根據平臺進行分類。