Включение отладочной сборки в библиотеку Mac OS X SDK - PullRequest
2 голосов
/ 24 января 2010

Как я уверен, вы знаете, что в состав SDK входит сборка отладочной и выпускной библиотек. Мой вопрос заключается в том, существует ли стандартный способ решения этой проблемы для платформы Mac OS X с точки зрения распространения и, возможно, интеграции XCode?

Один из вариантов - отправить вторую полностью отдельную структуру, например, MyLibrary.framework и MyLibraryDebug.framework. Если это правильный путь, есть ли хитрость в том, чтобы сказать Xcode использовать правильный? При добавлении фреймворка в проект XCode у него, похоже, не было возможности добавить его только в одну конфигурацию сборки, и кажется неуместным прибегать к установке правильной опции командной строки -framework MyLibrary[Debug] вручную для конфигурация!

Спасибо.

1 Ответ

3 голосов
/ 24 января 2010

Динамический компоновщик Mac OS X (dyld) имеет функцию именно для этой цели: DYLD_IMAGE_SUFFIX. Это позволит вам динамически загружать отладочную версию любого фреймворка или совместно используемой библиотеки, с которой вы связаны. Тогда вам не нужен совершенно отдельный .framework пакет; просто создайте другую общую библиотеку с именем MyLibrary_debug. Например, CoreFoundation в Tiger включает варианты отладки и профилирования (которые выглядят так, как будто они не получили обновлений безопасности, но в любом случае):

% ls -l /System/Library/Frameworks/CoreFoundation.framework/Versions/A/
total 20080
-rwxr-xr-x    1 root  wheel       1M Sep 10 17:55 CoreFoundation*
-rwxr-xr-x    1 root  wheel       6M Apr 24  2007 CoreFoundation_debug*
-rwxr-xr-x    1 root  wheel       2M Apr 24  2007 CoreFoundation_profile*

При использовании Apple, как указано выше, стандартный суффикс "отладки" - _debug. (Параметр «Использовать суффикс [отладка] при загрузке фреймворков» на панели «Общие» для исполняемого файла в Xcode задает DYLD_IMAGE_SUFFIX=_debug).

Вы также можете подумать, что использование _debug также является хорошей идеей, но я советую вам этого не делать, потому что Apple несколько раз ломала версии _debug их фреймворков ( некоторые примеры ). Начиная с Leopard только libSystem, libmx и libmathCommon поставляются с вариантами отладки, но в Snow Leopard они снова ломаются (я столкнулся с этой проблемой сам).

Если вы выберете другой суффикс для своей библиотеки отладки, вы не должны вызывать ошибки Apple и все еще иметь возможность совместно использовать остальную часть вашей инфраструктуры (заголовки, ресурсы и т. Д.) Между обычным и отладочным вариантами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...