0

我有一个在 Visual Studio 中构建的 CMake 项目。在我的 CMakeLists.txt 文件中,我有这样的声明:

if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
  message(FATAL_ERROR "Prevented in-tree build. ")
endif()

在我的 CMakeSettings.json 我有这一行:

{
"configurations":[
 {
 "name": "x64-Debug",
 //...
 "buildRoot": "{projectDir}\\out\\build\\${name}",
}
//...
]
//....
}

根据此文档 buildRoot映射到-DCMAKE_BINARY_DIR.

我得到了你可以在上面的 if 语句中看到的错误。

如果我打印CMAKE_BINARY_DIR变量,它看起来不像buildRoot,它只是项目的根。

它以前确实有效,但我在 VS 2019 的开发人员命令提示符中使用 CMake 来尝试构建项目,但现在,如果我尝试从 Visual Studio 再次构建,我会收到上述错误(in-tree build)。

知道有什么问题以及如何CMAKE_BINARY_DIR在 CMakeSettings.json 中正确设置吗?

4

1 回答 1

0

通过删除 CMakeCache.txt 文件解决了该问题。结果,我从与项目相同的目录中调用了 CMake,它创建了一个包含错误构建目录的 CMakeCache.txt 文件。

于 2019-11-08T14:19:03.210 回答