我使用VS 2017的新“打开文件夹”功能,通过CmakeSettings.json自动生成cmake。
代码是用C11编写的,所以我需要用gcc (来自mingw-64)编译它。我创建了一个新的cmake配置,如下所示:
{
"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内部工作?
发布于 2018-01-23 17:30:25
结果我不得不重新启动VS..。一切都如期而至。
发布于 2019-08-17 23:33:20
在完全不同的环境(Yocto & Linux)中编译时,我也犯了同样的错误,但我怀疑根本原因是相同的。也许这能帮到外面的人。
原来CMake是这样被调用的:
cmake -G 'Unix Makefiles' -DCMAKE_MAKE_PROGRAM=make -G 'Ninja' ...忍者发生器被选中,但错误的'MAKE_PROGRAM‘被设置。
应:
cmake -DCMAKE_MAKE_PROGRAM=ninja -G 'Ninja' ...https://stackoverflow.com/questions/48407391
复制相似问题