【问题标题】:cmake failing using windows style flags in clang try_compilecmake在clang try_compile中使用Windows样式标志失败
【发布时间】:2016-09-19 21:16:00
【问题描述】:

当我在这里尝试让 cmake 与 clang 和 gcc 一起工作时,我遇到了我认为有史以来最奇怪的事情。

我有一个小型的 hello world-ish 程序,可以在 ubuntu 中使用 cmake 中的 clang 完美编译,安装速度非常快,尝试起来很有趣。
现在在windows方面我有更多的问题,我按照常规顺序安装了MinGW w64,然后是clang(也是64位),最后是cmake(由于学校项目,VS 15较早安装)。我设法摸索了不同的 cmake 东西,直到我几乎让它编译、清除构建目录并在我的构建文件夹中使用 cmake .. -G"MinGW Makefiles" 来尝试让东西完全编译。相反,我得到的是错误,告诉我编译失败,不久我就弄清楚了原因;
cmake 的 try_compile 尝试将诸如 /nologo 之类的 MSVC 样式标志传递给 clang,然后它认为这些标志是目录。

我找不到任何强制标志看起来像常规 -flag 的方法。
是否有一些隐藏的 cmake 变量可以设置或者我只是在这个特定的配置中编译?

【问题讨论】:

  • 您使用哪个版本的 CMake? clang 支持最近才正式添加。参见例如here.
  • @Florian 我使用的是 cmake 3.6.2,CMakeLists.txt 顶部有 cmake_minimum_required(3.6),使用 NMake 或 MinGW makefile 没有区别。
  • clang 有一个 VS 兼容模式,所以 cmake 可能认为你想用 VS 构建。不过,我不知道如何解决。
  • 我找到了this 现在尝试编辑文件,如果我今天晚些时候运行它,我将在 cmake 提交错误报告...

标签: c cmake clang


【解决方案1】:

将 -fmsc-version=0 添加到标志中,CMake 不会假定它正在模拟 MSVC。

这是检查here

【讨论】:

  • 有史以来最好的答案。我已经非常努力地让它发挥作用。感谢您的回答,我终于能够构建一个非常基本的 CMake 工具链文件。谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 2021-11-27
  • 1970-01-01
  • 2018-03-15
  • 2016-11-05
  • 1970-01-01
  • 2023-03-04
相关资源
最近更新 更多