2009-11-24 3 views
0

Я пытаюсь конкретизировать ссылку в .a статические библиотеки по определению. Возможно ли это в xcode? В основном пытается обернуть конкретный код библиотеки в ifdefs, чтобы его можно было исключить во время компиляции, установив флаги.целевые условные пути поиска библиотек xcode

ответ

1

Нет, a C #define не соответствует уровню связи с библиотекой.

Однако, вы можете установить C #define (через настройку сборки Препроцессора Macros) от значения настройки пользовательской сборки, как BUILT_WITH_FOO, а также установить OTHER_LDFLAGS сборки настройки на основе этого пользовательской настройки, а также строить.

Например:

BUILT_WITH_FOO = foo 

GCC_PREPROCESSOR_DEFINITIONS_ = USING_FOO=0 
GCC_PREPROCESSOR_DEFINITIONS_foo = USING_FOO=1 
GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_$(BUILT_WITH_FOO)) 

OTHER_LDFLAGS_ = -lsomething 
OTHER_LDFLAGS_foo = -lsomething -lfoo 
OTHER_LDFLAGS = $(OTHER_LDFLAGS_$(BUILT_WITH_FOO)) 

выше позволит вам регулировать только значение параметра BUILT_WITH_FOO сборки, чтобы выбрать, следует ли использовать макросы препроцессора и другие флаги компоновщика варианты, чьи имена заканчиваются завершающая _, или те, чьи имена заканчиваются завершающим _foo.

+0

Но это решит мою проблему? Или, если у меня есть lib.a в моих путях поиска, но нет кода, ссылающегося на него во время компиляции, его нит, скомпилированный вообще? – drunknbass

+0

Статическая библиотека не скомпилирована, она связана. Просто быть в пути поиска недостаточно, чтобы заставить его быть связанным; он должен быть указан либо в фазе построения ссылок и библиотек ссылок в вашей целевой, либо в OTHER_LDFLAGS (как показано выше, то есть -lfoo). Если он ни в одном из них, он не будет связан. –

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

  • Нет связанных вопросов^_^