问题标签 [clang-cl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
79 浏览

c++ - Visual Studio - 将 windows clang 编译器 (VS2019 clang-cl) 与使用 VS2017 构建的 QT5 混合

我能够运行使用 clang-cl(VS-2019 附带的最新 clang)构建的调试配置以及使用 VS-2017 构建的自定义 QT,没有任何问题。

如果我尝试使用 Win64 Release 配置(针对相同的 QT VS-2017,Release)构建我的 QT 应用程序,我将进入最后的链接阶段:

lld-link:错误:未知文件类型:.obj\release\qaxobject.obj

在网上看,我看到 clang-cl 试图与 Visual Studio 二进制兼容,我觉得很奇怪,我只在发布版本上遇到这个问题。我也不清楚 QT 项目是否可以在 Windows 上使用最新的 clang-cl 构建 QT(如果发布时确实存在 ABI 问题)

0 投票
0 回答
98 浏览

c++ - clang/clang-cl 未定义符号“__tls_index”(自定义 CRT 实现)

我目前正在使用 Visual Studio 2022 和 clang-cl(12.0.0(现在与 VS 一起提供)和 13.0.0)实现我自己的 CRT,并且在使用时,/NODEFAULTLIB尽管实现了它们,但我在某些变量/函数上得到了未定义的符号。

这会导致编译时出现此错误:

知道为什么会这样吗?是否有我忘记使用 clang-cl 的特定编译器选项?这一切在 MSVC 下都可以正常工作(发现符号没有问题)。

0 投票
0 回答
7 浏览

visual-studio - Visual Studio 使用 cl-clang 错误太多

我以前在visual studio 2019中编写我的项目,但现在我需要通过clang编译我的项目,所以我尝试像这样使用clang-cl: 在此处输入图像描述

但是有很多错误,例如:

喜欢:

那么如何解决这个问题呢?谢谢!

0 投票
0 回答
28 浏览

c++ - 在 Visual Studio 和 Clang-cl 13 中使用 c++20 模块

最近,我尝试将模块与 VS2022,Clang-cl-13 一起使用。我按照我找到的说明进行操作。启用std:c++latestexperimental:module。创建了一个最基本的模块文件(Module.ixx):

将它导入另一个文件并使用它,Clang给我一个module 'Module' not found错误。当我将编译器切换到 MS 编译器时,同样的程序可以工作。我错过了 Clang 的一步还是模块还不支持?

0 投票
1 回答
41 浏览

python-3.x - 设置 Pythran 以在 Windows 上使用 clang-cl.exe 和 OpenMP 进行编译:需要一种传递编译器参数的方法

我正在使用 Pythran 将 Python 代码编译成 C/C++,并在 Windows 上支持 OpenMP。现在文档不适用于 Windows - 它指出:“Windows 支持正在进行中,并且仅针对带有 Visual Studio 2017 或更好的 clang-cl 的 Python 3.5+。请注意,使用 clang-cl.exe 是默认设置. 可以通过CXX和CC环境变量来改变。"

从玩弄我发现你必须使用clang-cl.exe,否则代码将无法编译(MSVC 不喜欢它)。

因此,首选编译器是Clang 12clang-cl.exe的“插入式”替代品,它是cl.exe通过选择“C++ Clang tools for Windows”从 Visual Studio 2019 安装程序安装的,现在我拥有C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\Llvm\x64\bin\clang-cl.exeLLVM 链接器lld-link.exe- 因为clang-cl.exe是默认值我不需要更改任何设置文件,我只是vcvarsall.bat在 Pythran 之前运行,所以编译器目录在路径中。(我后来注意到lld-link.exe需要对 distutils _msvccompiler.py 进行一些黑客攻击,切换link.exelld-link.exe并注释掉该'/LTCG'标志,因为 Clang 没有该选项,然后它可以工作......但仍然没有 OpenMP......

我在 Anaconda 中使用虚拟环境编译了一个示例,该环境pip安装了 NumPy 和 SciPy 库(OpenBLAS 后端),因为几乎没有记录 MKL 支持。它需要这个pythran-openblas包,所以我也安装了它,它编译得很好,clang-cl我可以毫无问题地导入它。我发现 [Python]\Lib\site-packages\pythran\pythran-win32.cfg 有一个选项可以传递cflags,我可以在其中键入正确的编译器参数,例如:-Xclang -fopenmp -march=ivybridge当运行 pythran [script.py] 时,所有这些标志都被传递正确的方法(使用默认值是不正确的)。但是......来自文档的这个例子仍然没有并行运行。

我在 Stack Exchange 上发现:clang-cl -cc1 --help会输出 clang 可以处理的所有参数。在 openmp 下它声明:-fopenmp解析 OpenMP 编译指示并生成并行代码。所以我的猜测是 Pythran 文档中给出的示例没有 OpenMP pragma 可以并行。现在他们为什么要这样做?不知道,因为他们展示了一个通过 OpenMP 使其速度更快的示例,但我无法在 Windows 上重现它。而且我有 6 个核心 / 12 个虚拟,所以我应该看到加速。

其他人有另一个 OpenMP 示例,我可以尝试一下???还是以另一种方式解决了使用 OpenMP 的谜团?

非常感激!

0 投票
0 回答
68 浏览

c++ - 无法从终端使用 clang-cl、CMake 和 Ninja 构建

有很多与此相关的问题和答案,但没有一个能让我摆脱当前的问题。我可以在 Visual Studio 中使用 CMake/Ninja/clang-cl 进行构建,但我希望在 Github 操作中完成,所以我需要能够从命令行执行它 - 但它在配置阶段失败。

从 Powershell 运行:

产量:

这些库安装在C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\um\x64我认为vcvarsall.bat会设置一些指向它们的环境变量的地方 - 但显然它没有。更奇怪的是,当我从 VS 中配置 CMake 时,它​​不需要传递CMAKE_RC_COMPILERarg,但如果我不传递,那么它会失败,说明rc.exe找不到。

显然 VS 在配置 CMake 之前在后台进行了一些额外的配置 - 它是什么!?


作为一个额外的数据点,如果我尝试在 'Developer Powershell for VS 2022' 中运行上述 CMake 配置命令,它会因不同的原因而失败: