【问题标题】:CMake in Visual Studio does not set CMAKE_BINARY_DIR correctlyVisual Studio 中的 CMake 未正确设置 CMAKE_BINARY_DIR
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多