【问题标题】:How to stop `/Gm-` being passed to clang_cl.exe from CMake如何阻止`/Gm-`从CMake传递给clang_cl.exe
【发布时间】:2018-06-15 23:41:59
【问题描述】:

我正在使用 clang 在 Windows 上构建一个 C++ 项目,并使用 CMake 生成该项目。我正在通过 Visual Studio/MSBuild 执行此操作。我已经为桌面(x86、x64)安装了 LLVM 和 VC++ 2015.3 v140 工具集。

要生成项目并构建,我这样做:

mkdir build
cd build
cmake .. -G "Visual Studio 15 2017 Win64" -TLLVM-vs2014
cmake --build .

我在构建时收到此警告:

clang-cl.exe : warning : argument unused during compilation: '/Gm-' [-Wunused-command-line-argument]

当我打印 ${CMAKE_CXX_FLAGS} 时,我得到:

/DWIN32 -fms-extensions -fms-compatibility -D_WINDOWS -frtti -fexceptions -Wall -Wextra -Wno-long-long -Wno-missing-braces

但我看不到 -/Gm 插入的位置或如何删除它。

这是以前有人遇到过的吗?

感谢您的帮助!

汤姆

【问题讨论】:

  • 我发现找到杂散编译标志来自何处的最佳方法之一是使用--trace 运行cmake。不过,它有大量的输出,所以你可能想将它发送到一个文件中(我不确定在 Windows 上,但它在 Unix 上是 cmake ... --trace >out.txt
  • 啊好主意!我会尝试一下,看看我是否可以收集任何其他信息。非常感谢您的建议。

标签: c++ cmake clang compiler-warnings


【解决方案1】:

这听起来像是一个 Visual Studio 错误 - 他们支持 clang 还为时过早。

我认为你应该在这里和report this 做正确的事。微软似乎真的在努力变得更加开放——在这两个意义上——如果我们想要一个好的产品,我们应该努力帮助他们。

我会留意那些不赞成的投票...

【讨论】:

  • 嗯,有趣!很高兴知道这不仅仅是我是一个菜鸟:) 我会继续报告这个,看看我是否得到更多信息,如果我得到回复,我会报告回来。感谢您的帮助!
  • @Tom /Gm- = MSVC 编译器中的“禁用最小重建”,这就是我知道这是一个错误的原因。
  • 感谢您的报告。我在想什么
  • 别担心!作为参考,这是报告的链接 - developercommunity.visualstudio.com/content/problem/274954/…。我还没有听到任何消息,但如果运气好的话,下周可能会得到更多的见解:)
  • 好东西。我看到他们回复了 20/6,他们肯定会继续。
猜你喜欢
  • 1970-01-01
  • 2011-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多