【问题标题】:How to use CMAKE for C++11 on windows?如何在 Windows 上为 C++11 使用 CMAKE?
【发布时间】:2014-08-15 05:41:35
【问题描述】:

我的 C++11 项目目前在 OSX 上使用 CMAKE、XCODE、CLANG。我希望在 Windows 上编译这段代码。

计划是在 windows 上使用相同的 cmake 设置文件。最好的情况是使用 CMAKE 生成使用 Clang 或 gcc for C++11 的 VS 项目。

在我看来,Visual Studio 暂时不会完全支持 C++11。所以我们都应该尝试为跨平台的C++11找到一个通用的解决方案。

如何使用 CMAKE 生成可以在 Windows 上编译 C++11 代码的项目/makefile?

【问题讨论】:

  • use CMAKE to generate VS projects which uses Clang与cmake无关,需要查看llvm状态。太棒了experimental: ... clang cannot parse the C++ standard library included with Visual Studio ...
  • Ninja 文件或 MSYS Makefiles 也可以。 clang 有自己的 std=c++11 。
  • Windows 上的 gcc 使用 MinGW 相对容易。但是为什么不使用VS呢? VS2013 支持大部分 c++11 特性,甚至 VS2010 也支持一些特性,例如 lamda、auto 等。

标签: visual-studio c++11 cmake mingw clang


【解决方案1】:

CMake 的 Visual Studio 生成器将始终使用 Visual C++ 的 cl 编译器。

您的要求需要为 CMake 编写一个新的生成器。也就是说,这个问题不能通过写一个聪明的CMakeLists.txt来解决,而是必须通过向CMake核心二进制本身添加一个特性来解决。我同意,一旦 Clang 获得适当级别的 Windows 支持,这可能会很有用,但在撰写本文时,可能还为时过早。

您可能想查看 CMake 的 experimental compile-features mechanism。这还不是 CMake 3.0 的一部分,但计划与下一个版本集成。这个想法是您只需指定您需要哪些 C++11 功能,CMake 会相应地配置编译器(如果编译器根本不支持该功能,则会给出错误)。

【讨论】:

【解决方案2】:

您可以通过在生成时指定 LLVM 工具集来创建使用 clang 的 VS 项目。

http://public.kitware.com/Bug/view.php?id=14863

例如:

cmake.exe .. -T LLVM-vs2010 

【讨论】:

  • 在 Windows 上获取 C++11 的解决方案是绕过 Visual Studio 编译器。看起来很合理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
  • 2012-06-06
  • 2013-08-13
  • 2019-05-10
  • 2016-11-05
  • 1970-01-01
相关资源
最近更新 更多