5

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

  • 条件应该是环境变量,而不是构建类型(调试、发布)或架构。
  • 如果未使用静态库(未导入,未在代码中使用),则最终二进制文件根本不应该包含对它的任何引用。

代码应如下所示:

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

并且环境变量应该具有相似的名称。

我玩过OTHER_LINKER_FLAGS = -weak_library,从目标中删除.a,将其设置为可选,但我无法让它工作。库未链接,我收到编译错误,或者部分.a属于最终可执行文件。

我怎样才能做到这一点?

4

1 回答 1

0

最后,我通过在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。如果最后三个参数未添加到命令行,则库根本不属于最终的可执行文件。

于 2013-10-02T07:39:03.370 回答