2009-11-24 3 views

Répondre

1

Non, un C #define n'est pas au même niveau que la liaison de bibliothèque.

Cependant, vous pouvez définir un C #define (via le paramètre de compilation des macros préprocesseur) de la valeur d'un paramètre de construction personnalisé, comme BUILT_WITH_FOO, et également définir votre build OTHER_LDFLAGS paramètre basé sur cette version personnalisée mise aussi bien.

Par exemple:

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)) 

ci-dessus ne vous permettra d'ajuster seulement la valeur de la BUILT_WITH_FOO build mise à choisir d'utiliser les macros préprocesseur et d'autres drapeaux Linker variantes dont les noms se terminent par un _ arrière, ou ceux dont les noms se terminent par un _foo.

+0

Mais cela résoudrait-il mon problème? Ou si j'ai lib.a dans mes chemins de recherche mais aucun code le référençant à la compilation son nit compilé du tout de toute façon? – drunknbass

+0

Une bibliothèque statique n'est pas compilée, elle est liée. Le simple fait d'être dans les chemins de recherche ne suffit pas à le lier; il doit être spécifié soit dans la phase de construction Link Frameworks & Libraries dans votre cible, soit dans OTHER_LDFLAGS (comme je l'ai montré ci-dessus, c'est-à-dire -lfoo). Si ce n'est pas le cas, cela ne sera pas lié. –

Questions connexes