XCode中的条件链接静态库与环境variables

我想链接一个静态库( .a文件)到我的代码有一些限制

  • 条件应该是一个环境variables而不是构buildtypes(Debug,Release)或体系结构。
  • 如果没有使用静态库(没有导入,没有在代码中使用),那么最终的二进制文件根本不应该包含任何引用。

代码应该如下所示:

 #ifdef CRASH_LOGGING [Crittercism enableWithAppID:@"abc"] #endif 

环境variables应该有一个相似的名字。

我玩的是OTHER_LINKER_FLAGS = -weak_library ,从目标中移除.a ,将其设置为可选,但是我无法使其工作。 无论是没有链接的库,我得到一个编译错误,或部分.a属于最终的可执行文件。

我怎样才能做到这一点?

最后,我通过向xcodebuild命令行添加更多参数来解决这个问题。

基本上你需要做的是调整:

  • .h文件所在的位置
  • 图书馆.a所在的地方
  • 告诉链接器你想使用库-lCrittercism_v4_0_7
 / usr / bin / xcodebuild -configuration释放干净
 “LIBRARY_SEARCH_PATHS = \ $ {LIBRARY_SEARCH_PATHS} \ $ {PROJECT_DIR} / Libraries / CrittercismSDK”
 “HEADER_SEARCH_PATHS = \ $ {HEADER_SEARCH_PATHS} \ $ {PROJECT_DIR} / Libraries / CrittercismSDK” 
 “OTHER_LDFLAGS = -lCrittercism_v4_0_7”

使用这种方法,您不需要将库添加到目标或Xcode。 如果最后三个参数没有添加到命令行中,则该库根本不属于最终的可执行文件。