问题标签 [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 投票
1 回答
725 浏览

visual-studio - 如何在 VS 项目中禁用 clang-cl 特定警告

我使用了一个 3rd 方项目,它会产生大量警告。我在 VS 项目属性中禁用了所有这些。有时,我会切换到LLVM clang-cl工具集来检查来自 clang 的警告。第 3 方项目使用 clang-cl 产生了如此多的警告,以至于 VS 的输出量太大了。我知道如何禁用它们,我通过命令行参数来禁用它们,例如:Wno-int-conversion -Wno-shift-op-parentheses等等。但是,当我切换回 VS 工具集时,所有这些用于禁用来自 clang-cl 的警告的命令行参数都会变成错误(未知cmd 行参数)与 MS 编译器。

有没有办法在同一个 VS 项目中同时拥有 clang 和 VS 设置?也许,以某种方式以 ClangCL 工具集为条件,这些只能为 clang-cl 构建添加?

0 投票
1 回答
943 浏览

visual-c++ - clang-cl 和 arch:avx2 是否存在兼容性问题?

我正在使用 Windows 10、Visual Studio 2019、平台:x64,并且在单文件 Visual Studio 解决方案中具有以下测试脚本:

在我的属性解决方案中,我将“启用增强指令集”设置为“高级矢量扩展 2 (/arch:AVX2)”。使用 msvc 编译时(将“平台工具集”设置为“Visual Studio 2019 (v142)”),代码返回 EXIT_SUCCESS,但是使用 clang-cl 编译时(将“平台工具集”设置为“LLVM (clang-cl)”)我得到了EXIT_FAILURE。在调试 clang-cl 运行时,index 的值是 4,而它应该是 59。这表明 clang-cl 正在读取与 MSVC 方向相反的位。

当我将“启用增强指令集”设置为“未设置”时,情况并非如此。在这种情况下,MSVC 和 clang-cl 都返回 EXIT_SUCCESS。

在所有情况下,所有 dll 都加载并显示在调试输出窗口中来自 C:\Windows\System32###.dll。

有人理解这种行为吗?我会很感激这里的任何见解。

编辑:我之前没有提到:我用 IntelCore i7-3930K CPU @3.20GHz 编译了这个。

0 投票
0 回答
548 浏览

windows - Windows 下使用 Clang-Cl 的 VS 代码:构建错误

我想在 Windows 下使用 Clang-Cl 来构建我的项目。作为生成器,我使用 Ninja,我的 IDE 是我最近切换到的 Visual Studio Code。VS Code 使用编译器工具包

Cmake Tools Extension 现在已成功配置我的项目,我遇到的问题是由于错误太多而导致构建停止。我正在构建一个调试版本,所以我不确定编译器工具包是否已经错误,因为它说的是 Release。将套件中的架构切换为 "visualStudioArchitecture": "x64" 什么都不做。这是我得到的错误列表

除了选择编译器工具包外,我没有更多的设置。有谁知道可能缺少什么?

这是来自 VS Code 的最终错误

我也试过 CLion,有同样的问题,但错误输出看起来有点不同

0 投票
2 回答
2769 浏览

visual-studio - 如何在 VS2019 CMAKE 中使用 Clang-CL LLVM?

在编写时,clang 在他们的 Visual Studio 用户手册中有这个文档:

这行不通。

我从 cmake 收到一条错误消息:

0 投票
1 回答
322 浏览

c++ - VS2019 中的 Clang 选项

我正在尝试在 Windows 10 下内置于 VS2019 中的 Clang-CL 编译器,但看不到如何设置编译器选项,特别是超过 64 位的长双精度数。

在项目设置中,平台工具集是 LLVM (clang-cl)。

然后在 C/C++ > All Options > Additional Options 我添加了 -mlong-double-80 并编译,但它给出了消息

clang-cl:警告:clang-cl 中忽略了未知参数:'-mlong-double-80' [-Wunknown-argument]

我尝试过的其他选项也是如此。

是否有正确的添加位置或正确的语法(MSVC 似乎以 / 而不是 - 为前缀)?

或者是否有一些 Clang-CL 文档说明哪些选项适用于 VS?

我找到了https://clang.llvm.org/docs/UsersManual.html#id9但我尝试的所有选项都不起作用,除了那些也是 MSVC 选项的选项。

0 投票
0 回答
148 浏览

c++ - clang-cl doesn't allow operator-overloads for __m128 because it's not a class or enum? Workaround to make it like MSVC?

The following code builds just fine under cl, but fails under clang-cl:

This is the error message:

The code is from rasmusbarr/nudge, an experiment which seems to be abandoned since 2017.

Setup (CMake/VSCode):

  • cl with VS Build Tools 2019 v16.8.2

  • clang-cl with C++ Clang Tools for Windows 10.0.0 (VS Build Tools 2019 v16.8.2)

Research:

I came across these two sources (1, 2) that seem to point out that the reason might be clang-cl does not consider __m128 to be a struct type. They fixed it in (1), but it seems that they just disable SSE for some platforms.

Although it was a long shot, I tried compiling with the VS version of immintrin.h and intrin.h but that path led nowhere.

I also noticed that someone else who build this experiment used the c++11 standard so I tried that too by setting set(CMAKE_CXX_STANDARD 11) in cmake. No change.

Question:

How can I modify the code (or change compiler flags) in order to build rasmusbarr/nudge with clang-cl?

Thank you

0 投票
0 回答
76 浏览

c++ - 使用 cl 时跳转到 C++ 错误在 VSCode 中有效,但在 clang-cl 中无效(使用 -FC 标志)

我有一个简单的构建以下行:

如果程序中有错误,我可以 alt/ctrl-click 错误,然后直接跳到它。但是,如果我将构建行更改为以下内容,它不会跳转到错误,而是在命令面板的顶部弹出“../main.cpp”,并显示“无匹配结果”:

我不确定这是由某些 VSCode 设置引起的,还是我需要添加到 clang-cl

0 投票
0 回答
61 浏览

c++ - Clang-CL 编译器错误:尚无法破坏此“自动”类型

Clang-CL 编译器错误:尚无法破坏此“自动”类型

语境 :

  • Clang-CL 编译尝试目前在我的几个代码库中导致以下错误:

由于此错误消息没有文件名或错误行,
因此很难找到其根本原因是什么代码。

此外,为了提供信息,这里是一个完整的日志,例如:

问题:有谁知道一个方便的技巧来识别该错误来自哪里?

提示我怀疑这部分编译器源代码(参见github 上的此处):

0 投票
1 回答
298 浏览

c++ - 区分 Clang CL 和 MSVC CL

有 CLang-CL,它是 MSVC 的 CL 的替代品。

有谁知道如何区分我的代码当前是由 clang-cl 还是 msvc 的 cl 编译的?无需在命令行上传递任何额外定义的宏。

使用

不起作用,两个编译器都定义了_MSC_VER。

同样在 Linux(Windows 也是)上的常规 CLang 中,可以clang -dM -E - < /dev/null转储所有已定义的宏。但是,据我所知,clang-cl 和 msvc-cl 都没有这样的选项来转储所有定义的宏,所以我不知道有一种方法可以查看两个编译器定义的宏列表的差异以找出使用哪个宏来区分这些编译器。

0 投票
1 回答
739 浏览

c++ - clang-cl 错误:lld-link:错误:未定义符号:__divti3

用clang-cl(Clang-11.0和MSVC2019)编译int128除法时,出现这个错误。
代码如:

和编译器输出:

如何解决?