Skip to content

使用 cpp module 时 set_runtimes("c++_static") 出现错误 flag 导致链接失败 #7442

@Seele-Official

Description

@Seele-Official

Xmake 版本

3.0.8

操作系统版本和架构

ubuntu 24

描述问题

使用 clang 编译时,设置 stdlib 为 libcxx 也就是 set_runtimes("c++_static") ,xmake 会错误的添加一个 gcc 的链接命令 -static-libstdc++ ,导致最终的链接失败,如下:

/usr/local/LLVM-21.1.0/bin/clang++ -o build/linux/x86_64/release/main build/.objs/main/linux/x86_64/release/main.cpp.o build/.objs/main/linux/x86_64/release/usr/local/LLVM-21.1.0/share/libc++/v1/std.cppm.o build/.objs/main/linux/x86_64/release/mod.mpp.o -m64 -stdlib=libc++ -L/usr/local/LLVM-21.1.0/lib -L/usr/local/LLVM-21.1.0/lib/x86_64-unknown-linux-gnu -static-libstdc++

经过我的测试发现,这种错误似乎只存在于 module 的构建中。也就是说我需要添加一个空的 mpp 文件,并将其添加到构建命令中才会触发。

附加信息和错误日志

我准备了一个最小复现 example.zip

错误日志 error.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions