Динамический компоновщик 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 и все еще иметь возможность совместно использовать остальную часть вашей инфраструктуры (заголовки, ресурсы и т. Д.) Между обычным и отладочным вариантами.