Я пытаюсь настроить проект C ++ в XCode, который использует Makefile для сборки.
Я начал работать с полностью пустым проектом (Пустой шаблон), добавив цель External Build System и правильно установив пути:
Однако точки останова не работают. Я создал очень простой тестовый проект с одним файлом .cpp, но, что бы я ни пытался, точка останова игнорируется:
Как предложено в другой вопрос, Я попытался перейти в Product -> Edit Scheme … и проверить «использовать пользовательский рабочий каталог», и я установил его в тот же каталог, что и исполняемый файл, но это не помогло.
Все мои файлы (исходный код, make-файл, исполняемый файл, файл проекта) находятся в одной папке в Finder (и в Xcode тоже).
Если это важно, мой Makefile тоже очень прост:
BUILD = .
TARGET = $(BUILD)/test
all:
g++ test.cpp -o $(TARGET)
добавлять -g
переключитесь на команду gcc, чтобы включить символы отладки, подобные этой:
BUILD = .
TARGET = $(BUILD)/test
all:
g++ -g test.cpp -o $(TARGET)
РЕДАКТИРОВАТЬ: И выбрал другое целевое имя, потому что test — это встроенная команда оболочки в большинстве оболочек, и у вас могут возникнуть проблемы с вызовом вашей программы из командной строки (даже если я не уверен в Mac OS).
У меня была та же проблема (Xcode 8.3.3), но добавление -g в make-файл не устранило ее. Я обнаружил (после большой боли), что make-файл очищает файлы .o как часть сборки (rm -f $ (OBJFILES)). Оказывается, информация о символах находится в файлах .o, поэтому, удалив их, Xcode больше не сможет отлаживать. Я закомментировал строку rm, и теперь все работает. Я использовал флаг -g, и он работает. Любой, кто борется с этим, должен убедиться, что файлы .o находятся в нужном месте.