clang - 在 Windows 上使用 libc++ 吗?

标签 clang llvm

libc++ 是否支持在 Windows 上以 Clang/LLVM 作为 native 引用/包含和编译?对于原生,我的意思是不依赖 mingw 和 cygwin。我没有找到太多关于此的文档,但我相信它应该受到支持,因为 Windows 的 clang 已经发布很长时间了。

最佳答案

只是一个更新。现在有实验性支持(2018 年初):

https://libcxx.llvm.org/docs/BuildingLibcxx.html#experimental-support-for-windows

(来自链接)

假设你有 Ninja,并且 libcxx/llvm 都已 checkout ,libcxx 可以通过编译

> cmake -G Ninja                                                                    ^
        -DCMAKE_MAKE_PROGRAM=/path/to/ninja                                         ^
        -DCMAKE_SYSTEM_NAME=Windows                                                 ^
        -DCMAKE_C_COMPILER=clang-cl                                                 ^
        -DCMAKE_C_FLAGS="-fms-compatibility-version=19.00 --target=i686--windows"   ^
        -DCMAKE_CXX_COMPILER=clang-cl                                                ^
        -DCMAKE_CXX_FLAGS="-fms-compatibility-version=19.00 --target=i686--windows" ^
        -DLLVM_PATH=/path/to/llvm/tree                                              ^
        -DLIBCXX_ENABLE_SHARED=YES                                                  ^
        -DLIBCXX_ENABLE_STATIC=NO                                                   ^
        -DLIBCXX_ENABLE_EXPERIMENTAL_LIBRARY=NO                                     ^
        \path\to\libcxx
> /path/to/ninja cxx
 

截至 2018 年 4 月 23 日,即使是为 x86-64 编译,它也会安装到 Program Files (x86) 中...(可以通过在上面将 i686 更改为 x86_64 来完成)。

2020 年 11 月更新:我现在使用一个名为 llvm-mingw 的软件包.

该软件包包括 clang 编译器工具链和包装器,以支持各种 gcc 风格的可执行文件(例如 gcc.exe、g++.exe、x86_64-w64-mingw32-gcc.exe),并且可以开箱即用地针对mingw libc++(您不必单独安装 mingw,mingw 库随软件包一起提供)。

llvm-mingw 还很年轻,但具有 mingw-w64 的大部分功能。未实现的功能有:

  • lld 链接到 dll(这是 gnu ld 的一项功能,但不是 llvm 实现)
  • lldb 没有 python 包装器,因此许多 IDE 无法使用调试器。 Visual Studio Code 似乎有自己的链接,因此 LLDB 可以与 VS Code 一起使用。人们现在正在致力于此。

可在作者的 github 存储库中获取版本。我的 winlua.net 有一个二进制安装程序网站。

关于clang - 在 Windows 上使用 libc++ 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27764874/

相关文章:

c++ - 表达式不是积分常量 clang libc++ threading

c++ - 使用 c++ api 将 c++ 回调函数转换为 llvm

c++ - 如何避免 LLVM 的 Support CommandLine 泄漏库参数?

javascript - 性能 : NaCl vs Emscripten

haskell - 使用 LLVM/Haskell 的 CodeGenFunction/CodeGenModule 的类型问题

c++ - 具有非 constexpr 构造函数的 constexpr 非静态成员函数(gcc、clang 不同)

c++ - Windows 上的 Clang 无法编译代码

c++ - CallInst 构造函数是私有(private)的?

c++ - 在 OSX 10.9 上部署 Qt 5.2.1 应用程序时出现链接器错误

c++ - Libquantum 代码理解 Makefile