Точки останова игнорируются в Xcode при использовании Makefile для сборки

Я пытаюсь настроить проект C ++ в XCode, который использует Makefile для сборки.

Я начал работать с полностью пустым проектом (Пустой шаблон), добавив цель External Build System и правильно установив пути:

введите описание изображения здесь

Однако точки останова не работают. Я создал очень простой тестовый проект с одним файлом .cpp, но, что бы я ни пытался, точка останова игнорируется:

введите описание изображения здесь

Как предложено в другой вопрос, Я попытался перейти в Product -> Edit Scheme … и проверить «использовать пользовательский рабочий каталог», и я установил его в тот же каталог, что и исполняемый файл, но это не помогло.

Все мои файлы (исходный код, make-файл, исполняемый файл, файл проекта) находятся в одной папке в Finder (и в Xcode тоже).

Если это важно, мой Makefile тоже очень прост:

BUILD = .
TARGET = $(BUILD)/test
all:
g++  test.cpp  -o $(TARGET)

1

Решение

добавлять -g переключитесь на команду gcc, чтобы включить символы отладки, подобные этой:

BUILD = .
TARGET = $(BUILD)/test
all:
g++ -g test.cpp  -o $(TARGET)

РЕДАКТИРОВАТЬ: И выбрал другое целевое имя, потому что test — это встроенная команда оболочки в большинстве оболочек, и у вас могут возникнуть проблемы с вызовом вашей программы из командной строки (даже если я не уверен в Mac OS).

4

Другие решения

У меня была та же проблема (Xcode 8.3.3), но добавление -g в make-файл не устранило ее. Я обнаружил (после большой боли), что make-файл очищает файлы .o как часть сборки (rm -f $ (OBJFILES)). Оказывается, информация о символах находится в файлах .o, поэтому, удалив их, Xcode больше не сможет отлаживать. Я закомментировал строку rm, и теперь все работает. Я использовал флаг -g, и он работает. Любой, кто борется с этим, должен убедиться, что файлы .o находятся в нужном месте.

0

По вопросам рекламы [email protected]