Visual Studio 2022 未显示任何 CMake 目标

问题描述 投票:0回答:1

我在一个更大的项目中遇到了这个问题,但我用一个快速拼凑的例子重现了它。 Visual Studio 使用 CMake 正确生成所有内容,如果我然后转到工具栏并选择

Build -> Build All
它将成功编译和链接所有内容,并且我可以从 powershell 运行生成的可执行文件...... CMake 的输出显示为:

根据 Visual Studio CMake 文档 我应该看到另外一行说明:

Target info extraction done.
。我相信这是我问题的核心,但我不确定为什么它没有发生,因为其他一切似乎都正常。

如果我尝试从 Visual Studio 本身运行(或调试)任何东西,它只是说我需要选择一个“启动项”,但没有一个可用:

在这里查看Visual Studio CMake 文档,我应该能够简单地转到解决方案资源管理器中的 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,但没有任何帮助。

c++ cmake visual-studio-2022 target
1个回答
0
投票

看完我所有的

CMakeLists.txt
后,我意识到问题是我包括了
set(CMAKE_BUILD_TYPE Release)
这行。当我第一次将我的代码从 Linux 移植到 Windows 时,我最初已经包含了它,并试图强制 Visual Studio 构建一个发布版本(因为我不确定 Viusual Studio 一开始是如何工作的)。我错误地把它留在里面了,所以即使 Visual Studio 被配置为编译调试版本,CMake 配置也不会导出任何将
CMAKE_BUILD_TYPE
设置为
RELEASE
的目标(无论如何,它不应该是).

删除那条线已经解决了我所有的问题。我在互联网上多次看到此类问题弹出窗口,我想知道这是否是问题所在。我现在认识到这是一个糟糕的问题,因为我自己对 Visual Studio 的误解,但我会留下这个答案,希望它能帮助其他可能刚刚开始使用 Visual Studio 并可能遇到类似问题的人问题。

© www.soinside.com 2019 - 2024. All rights reserved.