Objective C库和搜索路径

时间:2013-08-27 12:18:06

标签: objective-c xcode macos cocoa

我在Objective C(OSX)中创建了一个静态库,用于执行一些计算。然后我编译它并将其包含在另一个项目中。后来我无法在我的代码中使用它。

1>我写的时候

import "Auth.h"

它给了我一个找不到文件错误。为什么会这样?

2 - ;然后我必须将搜索路径设置为库的源,并且它已被编译并正确执行。这是否意味着我不能将编译库与其他项目一起重用而不分发源代码?

3>我想如果指定了搜索路径,则不需要编译库。所以我删除了库。但那没用。这意味着源+库都是必需的。

实际发生了什么。我只是想与项目的其他团队分发libAuth.a而不给出源代码。我怎么能这样做。

2 个答案:

答案 0 :(得分:1)

您只需提供库文件(.a)和头文件;源文件可以保持私有和未分发。

确保为可能使用该库的所有体系结构(OSX上的x86_64i386)编译库,使用lipo创建 fat二进制文件 .a档案。

例如:

xcrun --sdk macosx10.8 clang -arch x86_64 -o file1.o file1.m
xcrun --sdk macosx10.8 clang -arch x86_64 -o file2.o file2.m
xcrun --sdk macosx10.8 libtool -static -arch_only x86_64 -o libmystuff_x86_64.a file1.o file2.o

xcrun --sdk macosx10.8 clang -arch i386 -o file1.o file1.m
xcrun --sdk macosx10.8 clang -arch i386 -o file2.o file2.m
xcrun --sdk macosx10.8 libtool -static -arch_only i386 -o libmystuff_i386.a file1.o file2.o

xcrun --sdk macosx10.8 lipo -arch x86_64 libmystuff_x86_64.a -arch i386 libmystuff_i386.a -create -output libmystuff.a

答案 1 :(得分:1)

尝试在主项目目标设置中添加以下内容;

“ - ObjC”和“-all_load”构建设置>链接>其他链接器标志, “$(TARGET_BUILD_DIR)/ usr / local / lib / include”和“$(OBJROOT)/ UninstalledProducts / include”来构建设置>搜索路径>标题搜索路径, " $(BUILT_PRODUCTS_DIR)"构建设置>用户标题搜索路径。