包括不带-l的静态库

时间:2013-11-26 14:32:25

标签: cocoapods

我正在尝试为我没有开发的第三方库构建podspec。

我已正确定义:source,preserve_paths,resources和source_files。

此库包含一个静态库(.a文件)。我试过使用vendored_library和库。我还尝试使用xconfig设置'LIBRARY_SEARCH_PATHS'。我并没有让它成功。

我从编译日志中注意到,如果我手动包含库,则使用以下参数编译:

".. -framework CoreMedia /Users/luca/..path to the lib.../thelib.a -framework ..." 

它有效。如果我使用pod,它将是(取决于规范)

 ".. -framework CoreMedia -l/Users/luca/..path to the lib.../thelib.a -framework ..." 

 ".. -framework CoreMedia -lthelib.a -framework ..." 

我花了4个小时试图解决这个问题。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

这些线路对我来说非常合适。 s.ios.vendored_library是你缺少的。

  

s.preserve_paths =' libCocoaLib.a'

     

s.library =' CocoaLib'

     

s.ios.vendored_library =' libCocoaLib.a'

s.ios.vendored_library将在您的Pod中创建一个Frameworks文件夹,该文件夹将包含lib

答案 1 :(得分:0)

对于Cocoa Pods,我设法这样做:

  

s.preserve_paths ='libYandexMobileMetrica.a'

     

s.libraries ='YandexMobileMetrica'

通常来说,要将库包含到项目中,您需要向链接器添加标志,告诉它链接库(来自man ld):

  

控制库的选项

 -lx         This option tells the linker to search for libx.dylib or
             libx.a in the library search path.  If string x is of the
             form y.o, then that file is searched for in the same places,
             but without prepending `lib' or appending `.a' or `.dylib' to
             the filename.

然后你需要再次从链接器手册中为你的库添加路径到链接器的库搜索路径:

 -Ldir 
             Add dir to the list of directories in which to search for
             libraries.  Directories specified with -L are searched in the
             order they appear on the command line and before the default
             search path. In Xcode4 and later, there can be a space
             between the -L and directory.