首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS 2017 + cmake + ninja + mingw

VS 2017 + cmake + ninja + mingw
EN

Stack Overflow用户
提问于 2018-01-23 16:29:19
回答 2查看 2.4K关注 0票数 2

我使用VS 2017的新“打开文件夹”功能,通过CmakeSettings.json自动生成cmake。

代码是用C11编写的,所以我需要用gcc (来自mingw-64)编译它。我创建了一个新的cmake配置,如下所示:

代码语言:javascript
复制
{
  "name": "GNU-Debug",
  "generator": "Ninja",
  "configurationType": "Debug",
  "inheritEnvironments": [ "msvc_x64_x64" ],
  "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
  "installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
  "variables": [
    {
      "name": "CMAKE_MAKE_PROGRAM",
      "value": "C:\\msys64\\mingw64\\bin\\mingw32-make.exe"
    },
    {
      "name": "CMAKE_C_COMPILER",
      "value": "C:\\msys64\\mingw64\\bin\\gcc.exe"
    },
    {
      "name": "CMAKE_CXX_COMPILER",
      "value": "C:\\msys64\\mingw64\\bin\\g++.exe"
    }
  ]
}

输出如下所示:

Ninja的检测版本(GNU 4.2.1,为x86_64-w64-mingw32版权(C) 1988-2016自由软件基金会,Inc.许可GPLv3+:GNU第3版或更高版本http://gnu.org/licenses/gpl.html )这是免费软件:您可以自由地更改和重新分发它。在法律允许的范围内,没有任何保证。)低于CMake (1.3)所要求的忍者版本。

这是很奇怪的,考虑到检测到的忍者版本应该是一个数字。VS‘忍者和MinGW忍者都是最新的(1.8.2)。

有没有其他方法让MinGW + CMake在VS 2017内部工作?

EN

回答 2

Stack Overflow用户

发布于 2018-01-23 17:30:25

结果我不得不重新启动VS..。一切都如期而至。

票数 1
EN

Stack Overflow用户

发布于 2019-08-17 23:33:20

在完全不同的环境(Yocto & Linux)中编译时,我也犯了同样的错误,但我怀疑根本原因是相同的。也许这能帮到外面的人。

原来CMake是这样被调用的:

代码语言:javascript
复制
cmake -G 'Unix Makefiles' -DCMAKE_MAKE_PROGRAM=make -G 'Ninja' ...

忍者发生器被选中,但错误的'MAKE_PROGRAM‘被设置。

应:

代码语言:javascript
复制
cmake -DCMAKE_MAKE_PROGRAM=ninja -G 'Ninja' ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48407391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档