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/