Ios XCode中带环境变量的条件链接静态库

Ios XCode中带环境变量的条件链接静态库,ios,xcode,static-linking,Ios,Xcode,Static Linking,我想将静态库(.a文件)链接到我的代码中,但有一些限制 条件应该是环境变量,而不是构建类型(调试、发布)或体系结构 如果没有使用静态库(没有导入,没有在代码中使用),那么最终的二进制文件不应该包含对它的任何引用 代码应该如下所示: #ifdef CRASH_LOGGING [Crittercism enableWithAppID:@"abc"] #endif 环境变量应该有一个类似的名称 我使用OTHER\u LINKER\u FLAGS=-weak\u library,从目标中删除.a,

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

  • 条件应该是环境变量,而不是构建类型(调试、发布)或体系结构
  • 如果没有使用静态库(没有导入,没有在代码中使用),那么最终的二进制文件不应该包含对它的任何引用
代码应该如下所示:

#ifdef CRASH_LOGGING
[Crittercism enableWithAppID:@"abc"]
#endif
环境变量应该有一个类似的名称

我使用
OTHER\u LINKER\u FLAGS=-weak\u library
,从目标中删除
.a
,将其设置为可选,但无法使其工作。要么是库没有链接,要么是编译错误,要么是
的一部分。a
属于最终的可执行文件


如何实现这一点?

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

基本上,您需要做的是调整:

  • 标题
    .h
    文件所在的位置
  • .a
    所在的位置
  • 告诉链接器您要使用库
    -lCrittercism\u v4\u 0\u 7
/usr/bin/xcodebuild-配置发布清理 “库搜索路径=\${LIBRARY\u SEARCH\u PATHS}\${PROJECT\u DIR}/Libraries/critercismsdk” “HEADER\u SEARCH\u PATHS=\${HEADER\u SEARCH\u PATHS}\${PROJECT\u DIR}/Libraries/critercismsdk” “其他\u LDFLAGS=-lCrittercism\u v4\u 0\u 7” 使用这种方法,您根本不需要将库添加到目标或Xcode。如果最后三个参数未添加到命令行,则库将根本不属于最终可执行文件。

related: /usr/bin/xcodebuild -configuration Release clean "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"