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