2010-01-24 3 views
2

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

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

Спасибо.

ответ

3

Динамический компоновщик 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 версии своих структур в ряде случаев (someexamples). С Leopard только libSystem, libmx и libmathCommon идут с вариантами отладки, но в Snow Leopard они снова сломались (я столкнулся с this problem).

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

Смежные вопросы