简单的 cmake 项目,在 windows 上使用 nmake 构建没有调试符号

Simple cmake project, build with nmake on windows has no debug symbols

我正在尝试学习使用 CMAKE 创建构建。我一直在试验,但无法调试以处理我生成的项目。为了对此进行测试,我设置了一个基本的 hello world 项目,如下所示: 简单项目 - 包括 --Main.cpp --CMakeLists.txt

这是Main.cpp的内容。

#include <iostream>
using namespace std;

int main() {
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    std::getchar();
    return 0;
}

这是CMakeLists.txt的内容:

cmake_minimum_required(VERSION 3.15.3)
project(CleanProject LANGUAGES CXX C)

add_executable(CleanProject Include/Main.cpp)

我现在 运行 在开发人员控制台中使用以下命令进行 cmake: D:\Development\SimpleProject\Build>cmake -DCMAKE_BUILD_TYPE=调试..

-- Building for: NMake Makefiles
-- The CXX compiler identification is MSVC 19.23.28105.4
-- The C compiler identification is MSVC 19.23.28105.4
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual 
Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx86/x86/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual 
Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx86/x86/cl.exe -- 
works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual 
Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx86/x86/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual 
Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx86/x86/cl.exe -- 
works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: D:/Development/SimpleProject/Build

最后,我使用 nmake 进行构建

Microsoft (R) Program Maintenance Utility Version 14.23.28105.4
Copyright (C) Microsoft Corporation.  All rights reserved.

Scanning dependencies of target CleanProject
[ 50%] Building CXX object CMakeFiles/CleanProject.dir/Include/Main.cpp.obj
Main.cpp
[100%] Linking CXX executable CleanProject.exe
[100%] Built target CleanProject

如果我现在尝试调试这个程序,无论是在像 eclipse 这样的 IDE 中还是在命令行中使用 gdb,我都会收到如下所示的未找到调试符号错误。

D:\Development\SimpleProject\Build>C:\MinGW\bin\gdb.exe CleanProject.exe GNU gdb (GDB) 7.6.1 版权所有 (C) 2013 Free Software Foundation, Inc. 许可 GPLv3+:GNU GPL 版本 3 或更高版本 http://gnu.org/licenses/gpl.html 这是免费软件:您可以自由更改和重新分发它。 在法律允许的范围内,不提供任何保证。输入 "show copying" 和 "show warranty" 了解详情。 此 GDB 配置为 "mingw32"。 有关错误报告说明,请参阅: http://www.gnu.org/software/gdb/bugs/... 从 D:\Development\SimpleProject\Build\CleanProject.exe 读取符号...(未找到调试符号)...完成。

我似乎找不到解决此问题的方法。我尝试将几个不同的变量添加到我的 cmakelist 文件或作为 cmake 的额外选项但没有成功。 任何帮助将不胜感激,因为这是目前唯一剩下的障碍。我的更大的项目也成功构建,但如果不调试就很难继续。 谢谢!

正在读取您的 CMake 输出:

-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.23.28105/bin/Hostx86/x86/cl.exe -- works

您似乎在使用 Visual Studio 编译器。

它的编译方式与 GDB 调试器不兼容,您必须改用 MSVC 调试器,它可以是 运行 在 visual studio 调试器中。