From 8e0df59deb97d06c15d03808c6a3eab00af80ccb Mon Sep 17 00:00:00 2001 From: PuqiAR Date: Sat, 3 Jan 2026 17:45:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=A5=E6=8A=B1clang,=20cpp=2023=E6=88=91?= =?UTF-8?q?=E6=9D=A5=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .ci/Dockerfile | 24 ++++++++++++++---------- xmake.lua | 5 +++-- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/.ci/Dockerfile b/.ci/Dockerfile index 904dee9..e8f6a81 100644 --- a/.ci/Dockerfile +++ b/.ci/Dockerfile @@ -1,29 +1,33 @@ -FROM ubuntu:24.04 # 改用 Ubuntu 24.04,自带 GCC 13 +FROM ubuntu:24.04 -# 设置非root用户 -RUN useradd -m -s /bin/bash builder - -# 1. 安装基础工具(Ubuntu 24.04 已有 GCC 13) +# 1. 安装LLVM/Clang 17+工具链(Ubuntu 24.04官方源已包含) RUN apt-get update && \ apt-get install -y --no-install-recommends \ wget tar git curl ca-certificates \ build-essential \ - && rm -rf /var/lib/apt/lists/* + clang-17 lld-17 libc++-17-dev libc++abi-17-dev \ + && rm -rf /var/lib/apt/lists/* && \ + update-alternatives --install /usr/bin/clang clang /usr/bin/clang-17 100 && \ + update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-17 100 && \ + update-alternatives --install /usr/bin/ld ld /usr/bin/ld.lld-17 100 -# 2. 切换到builder用户安装xmake +# 2. 设置非root用户 +RUN useradd -m -s /bin/bash builder + +# 3. 切换到builder用户安装xmake USER builder WORKDIR /home/builder -# 下载并安装xmake RUN wget -O xmake https://git.fig-lang.cn/PuqiAR/xmake-binary-copy/raw/commit/989d1f2dabb0bc8d5981a5f900c2cf7c2ac78ee4/xmake-bundle-v3.0.5.linux.x86_64 && \ chmod +x xmake && \ ./xmake --version 2>&1 | head -1 +# 4. 切回root,将xmake安装到系统路径 USER root RUN cp /home/builder/xmake /usr/local/bin/xmake && \ chmod +x /usr/local/bin/xmake -# 3. 验证编译器版本 -RUN gcc --version && g++ --version +# 5. 验证环境 +RUN clang++ --version && xmake --version USER builder \ No newline at end of file diff --git a/xmake.lua b/xmake.lua index 7405647..739368f 100644 --- a/xmake.lua +++ b/xmake.lua @@ -8,8 +8,9 @@ target("Fig") set_languages("c++23") if is_plat("linux") then - add_cxxflags("-static-libstdc++", "-static-libgcc") - add_ldflags("-static") + set_toolchains("clang") + add_cxxflags("-stdlib=libc++") + add_ldflags("-stdlib=libc++") elseif is_plat("mingw") then add_cxxflags("-static") add_ldflags("-static")