Visual Studio 2022未显示任何CMake目标

oknrviil  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(700)

我在一个更大的项目中遇到了这个问题,但我用一个快速组合的示例重现了它。Visual Studio使用CMake正确地生成了所有内容,如果我然后转到工具栏并选择Build -> Build All,它将成功地编译并链接所有内容,我可以从powershell运行生成的可执行文件... CMake的输出如下所示:

根据Visual Studio CMake documentation,我应该看到一个附加行,说明:我相信这是我问题的核心,但我不确定为什么它没有发生,因为其他一切似乎都工作正常。
如果我尝试从Visual Studio本身运行(或调试)任何东西,它只会说我需要选择一个"启动项",但没有可用的:

看看这里的Visual Studio CMake documentation,我应该能够简单地转到解决方案资源管理器中的CMake目标视图,并看到我的所有目标,但我没有看到任何目标:

虽然我应该看到(在这个非常简单的例子中)hello的目标,但我有以下CMake结构:
CMakeLsits.txt文件:

cmake_minimum_required(VERSION 3.9)
project(vira LANGUAGES CXX VERSION 0.9)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) 
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)

add_subdirectory(src)

src/CMakeLists.txt

add_executable(hello hello.cpp)

src/hello.cpp

#include <iostream>

int main() 
{
    std::cout << "hello world!\n";
    return 0;
}

我已经被这件事逼疯了,因为我问过的人只是简单地重复了Visual Studio文档中的内容,然而无论是这个简单的项目,还是我正在工作的更大的实际项目,都没有出现任何CMake目标。这意味着我无法使用Visual Studio的任何调试功能,因为我无法选择启动项。
我做错了什么吗?Visual Studio至少可以清楚地识别CMakeLists.txt,因为它会自动生成所有内容,并且如果我手动转到Build -> Build All,它会生成项目。这让我更加困惑,为什么我会遇到这种情况。
我甚至尝试从头开始重新安装Visual Studio,但没有任何帮助。

z18hc3ub

z18hc3ub1#

在阅读了所有CMakeLists.txt之后,我意识到问题在于我包含了set(CMAKE_BUILD_TYPE Release)行,我最初是在第一次将代码从Linux移植到Windows时包含这一行的,当时我试图强制Visual Studio构建一个发布版本(因为我一开始不确定Visumal Studio是如何工作的)。我错误地把它留在了里面,所以即使VisualStudio被配置为编译调试版本,CMake配置不会导出CMAKE_BUILD_TYPE设置为RELEASE的任何目标(无论如何,它不应该这样)。
删除这一行已经解决了我所有的问题。我在互联网上看到过这类问题弹出很多次,我想知道是否可能是这个问题。我现在认识到这是一个糟糕的问题,由于我自己对Visual Studio的误解,但我将把这个答案留在这里,希望它能帮助其他可能刚刚开始使用VisualStudio并可能遇到类似问题的人。

相关问题