Почему компилятор XLode LLVM GCC 4.2 не может генерировать правильную сборку? - PullRequest
1 голос
/ 18 ноября 2011

Я использую XCode 4.2 в Mac OS X 10.6.8 и запускаю эмулятор iOS5.У меня есть рабочее пространство с основным проектом и вторичным проектом, от которого зависит основной.

Моя проблема заключается в том, что после внесения изменений в файл .cpp или .mm во вторичном проекте, даже если XCodeперекомпилирует соответствующие файлы, он не генерирует новый код сборки, отражающий изменение кода.Таким образом, при переходе через мой код в отладчике переход к следующей строке пропускает все внесенные мной изменения.
Мой единственный выход - выполнить чистку и сборку.

Основной проект может быть скомпилирован с использованием LLVM GCC 4.2 или Apple LLVM Compiler 3.0.Однако (из-за того, что я считаю необоснованными ошибками компиляции, касающимися шаблонных классов, вызывающих функции родительских классов), я могу компилировать только вторичный проект с LLVM GCC 4.2.

Оба проекта содержат файлы цели c, хотя вторичный проектв основном это существующая кодовая база c ++, используемая повторно в iOS.

Заранее благодарен за любые рекомендации по решению этой проблемы.


Пример поведения:

обычная сборка: Во время отладки представьте, что вы перешагнули 3 строки кода.Первая строка - старый код, который был скомпилирован много раз.2-я и 3-я строки были просто напечатаны и скомпилированы без выполнения сборки + +.Когда счетчик программы находится в 1-й строке кода, компилятор считает, что все 3 строки кода действительно являются одной, и выделяет их все вместе, чтобы указать текущую выполняемую строку.Переход к следующей строке пропускает строки 2 и 3 и перемещает счетчик программы к следующей действительной строке кода, т.е. строке 4.

clean + build: На этот раз отладчик ведет себя, как и ожидалось,Когда счетчик программ находится в строке 1, только он подсвечивается.Переход на следующую строку перемещает счетчик программы на строку 2.


Поскольку я могу редактировать исходный код основного проекта и нормально отлаживать, возможно, моя проблема заключается в том, что я неправильно указал зависимость между двумя проектами,В главном проекте Target-> Build Phases-> Target Dependencies я установил зависимость, которая будет выходом подпроекта.Также в навигаторе проекта XCode (просмотр с помощью ярлыка команды 1) вы можете видеть, что подпроект физически содержится в основном проекте.

...