【发布时间】:2019-11-08 22:19:03
【问题描述】:
我有一个在 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}",
}
//...
]
//....
}
根据这个documentationbuildRoot映射到-DCMAKE_BINARY_DIR。
我得到了你在上面的 if 语句中看到的错误。
如果我打印CMAKE_BINARY_DIR 变量,它看起来不像buildRoot,它只是项目的根。
它以前确实有效,但我在 VS 2019 的开发人员命令提示符中使用 CMake 来尝试构建项目,但现在,如果我尝试从 Visual Studio 再次构建,我会收到上述错误(in-tree build )。
知道出了什么问题以及如何在 CMakeSettings.json 中正确设置 CMAKE_BINARY_DIR 吗?
【问题讨论】:
-
您在 json 中的语法有问题,没有被扩展。请尝试:
"buildRoot": "${projectDir}\\out\\build\\${name}",注意缺少的$ -
您在
{projectDir}中缺少$。 -
对不起,这是我的问题中的一个错字。在我的实际代码中,buildRoot 是正确的。
标签: visual-studio cmake