当我编辑CMakeLists.txt文件时,它第一次工作并使用缓存,但第二次我总是得到
1>现有缓存包含对不存在的MSVC编译器的引用。 删除缓存并重新生成。
只有在我使用clang编译器时才会发生这种情况。如果我使用默认的msvc编译器,则始终使用缓存
// main.cpp
int main()
{
return 0;
}
#CMakeLists.txt
cmake_minimum_required(VERSION 3.0)
add_executable(app main.cpp)
//CMakeSettings.json
{
// See https://go.microsoft.com//fwlink//?linkid=834763 for more information about this file.
"configurations": [
{
"name": "x86-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x86" ],
"buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
"installRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "-v",
"ctestCommandArgs": "",
"variables": [
{
"name": "CMAKE_CXX_COMPILER",
"value": "clang-cl"
},
{
"name": "CMAKE_C_COMPILER",
"value": "clang-cl"
},
{
"name": "CMAKE_SYSTEM_NAME",
"value": "Windows"
}
]
}
]
}
答案 0 :(得分:1)
将我的评论转化为答案
当ninja与visual-studio-2017一起使用时,您必须为编译器提供完整路径:
<强> CMakeSettings.json 强>
...
"variables": [
{
"name": "CMAKE_CXX_COMPILER",
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe"
},
{
"name": "CMAKE_C_COMPILER",
"value": "C:\\Program Files\\LLVM\\bin\\clang-cl.exe"
},
{
"name": "CMAKE_SYSTEM_NAME",
"value": "Windows"
}
]
...
以下是我的想法:
CMAKE_CXX_COMPILER
变量覆盖为CMake
我认为这是VS2017使用CMake的一个错误。
<强>参考强>