简单的 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 调试器中。
我正在尝试学习使用 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 调试器中。