zoukankan      html  css  js  c++  java
  • xcode 静态链接库的问题

    Xcode4中使用静态库
    1. 创建一个工作区:".xcworkspace"
    2. 将项目添加到工作区(新建/添加现有项目)
    3. 向应用程序target添加静态库,从Workspace
    4. 打开 “Build Settings” 标签,设置 “User Header Search Paths” 项的值为“$(BUILT_PRODUCTS_DIR)”,并选中“Recursive”框
    5. 设置“Other Linker Flags”项的值为“-ObjC”
    6. 打开scheme,设置build顺序,将静态库添加进来,并放在程序前面
    7. 从静态库项目中拖动公共头文件到应用程序项目,这些头文件不需要被包括在target中

    创建静态库
    1. 将所有需要公开的头文件在“Target Membership”中将其设置为“public”
    2. 打开 “Build Settings” ,设置“InstallationDirectory”的值为“$(BUILT_PRODUCTS_DIR)”;并设置“SkipInstall”的值为“Yes”
    3. 设置“Public Headers Folder Path”的值为 “$(TARGET_NAME)”

     

    参考原文:http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4/

     

    下边是各种使用经验:

    (一)

    1、以xcode的静态库文件模板创建静态库文件;

    2、注意类文件的命名方式,以免和工程下的类冲突;

    3、把需要作为接口的头文件声明为public,在xcode的target membership设置里面;

    4、在静态库文件的引用target里面设置静态库文件的安装目录为当前工程的编译目录下,使得当前工程目标能在此目录下找到静态库文件,当前工程编译目录引用为$(BUILT_PRODUCTS_DIR);

    5、设置静态库的公共头文件目录路径,使之在当前工程编译后放置于以静态库命名的文件目录下,即使得第4步的能找得到静态库文件的接口;

    6、如果静态库中存在Objective-C风格的类文件,需要在静态库的build-setting中的Other linkerflags中加上-ObjC,如果存在Category,还应加上-all_load或-force_load。

     

    (二)

    概要

    1. AppStore中的 iphone 程序不允许使用动态链接库。 
    2. 如果需要在隐藏代码的前提下提供某些功能,可以使用静态链接库。

    XCode项目中添加静态库的方法
    1. 右击target,选择add -> newtarget 
    2. 在弹出的 NewTarget 界面中选择Cocoa Touch -> StaticLibrary ,为新 library 取个名字。
    3. 将源文件添加到这个库。可以直接拖动现存源文件,也可以右击 -> add。注意选择新建的库为添加的 target 。
    4. 设置原项目,令其使用新建的库。
      • 右击原项目的 target ,选择 getInfo 。
      • 选择 General 选项卡
      • 向 linked libraries 中添加新创建的库 (即添加 .a 文件)。
    5. 编译新建的静态库以产生 .a 文件。(右击静态库的 target ,选择build)
    6. 编译原项目,若可以调用静态库中的方法则添加成功。

    怎样隐藏静态库的代码 
    1. 可以直接删除静态库中的源代码,只提交链接库文件(.a),这样原项目仍然可以编译执行。

    备注:
    1. Mac OS 下的静态链接库文件与linux 同样使用 .a 扩展名。
    参考资料

    原参考处

     

    下边的是 

     

    http://blog.carbonfive.com/2011/04/04/using-open-source-static-libraries-in-xcode-4

    的汉化翻译 加理解

    http://xiaoruanjian.iteye.com/blog/912478

  • 相关阅读:
    【MySQL】全量+增量的备份/恢复
    【MySQL】MMM和MHA高可用架构
    【MySQL配置参数】sync_binlog和innodb_flush_log_at_trx_commit
    Redis2.8之后主从复制的流程
    docker push 出现:x509: certificate signed by unknown authority
    Ubuntu Docker版本的更新与安装
    CentOS7用阿里云Docker Yum源在线安装Docker
    Docker国内仓库和镜像
    Docker入门
    在centos和redhat上安装docker
  • 原文地址:https://www.cnblogs.com/chenfulai/p/2505806.html
Copyright © 2011-2022 走看看