Простой проект cmake, сборка с nmake на windows не имеет отладочных символов - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь научиться использовать CMAKE для создания сборок. Я экспериментировал, но не могу отладить работу над моими проектами. Чтобы проверить это, я настроил базовый проект hello world, такой как: SimpleProject --Include --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

Если я сейчас попробую отладить эту программу, будь то в IDE, например, eclipse, или с помощью gdb из командыВ строке появится сообщение об ошибке «Обнаружены не символы отладки», как показано ниже.

D: \ Development \ SimpleProject \ Build> C: \ MinGW \ bin \ gdb.exe CleanProject.exe GNU GDB (GDB) 7,6.1 Copyright (C) 2013 Free Software Foundation, Inc. Лицензия GPLv3 +: GNU GPL версии 3 или более поздней * http://gnu.org/licenses/gpl.html Это бесплатное программное обеспечение: вы можете изменять и распространять его. НЕ ПРЕДОСТАВЛЯЕТСЯ ГАРАНТИИ, если это разрешено законом. Введите «показать копирование» и «показать гарантию» для деталей. Этот GDB был настроен как "mingw32". Инструкции по сообщению об ошибках см. В: http://www.gnu.org/software/gdb/bugs/... Чтение символов из D: \ Development \ SimpleProject \ Build \ CleanProject.exe ... (символы отладки не найдены) ... выполнено.

Iне могу найти решение для этого. Я попытался добавить несколько различных переменных в мой файл cmakelist или в качестве дополнительных опций для cmake, но безуспешно. Любая помощь будет принята с благодарностью, так как это единственное препятствие, оставшееся на данный момент. Мои большие проекты также успешно строятся, но без отладки довольно сложно продолжить. Спасибо!

1 Ответ

1 голос
/ 04 октября 2019

Чтение вашего вывода 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.

...