在XCode中使用环境变量来条件链接静态库

6

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

  • 条件应该是环境变量,而不是构建类型(Debug、Release)或架构。
  • 如果没有使用静态库(未导入、未在代码中使用),那么最终的二进制文件中不应该包含任何对它的引用。

代码应该如下所示:

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

同时环境变量的名称应该相似。

我尝试使用OTHER_LINKER_FLAGS = -weak_library,从目标中删除.a,将其设置为可选项,但是我无法使它正常工作。要么库没有链接上,要么我收到了编译错误,或者一部分.a属于最终可执行文件。

我该如何实现这个?


1
相关:https://dev59.com/wVHTa4cB1Zd3GeqPQEm7 - pkamb
1个回答

0
最终,我通过在xcodebuild命令行中添加更多参数来解决了这个问题。
基本上,你需要调整以下内容:
  • .h文件的位置
  • .a库的位置
  • 告诉链接器你想使用的库-lCrittercism_v4_0_7
/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"
采用这种方法,你不需要将库添加到目标或Xcode中。如果没有添加最后三个参数到命令行中,该库将不会属于最终可执行文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接