.h文件配置 ios_ios .cpp文件 xcode 配置 - CSDN
  • ios 生成.a文件

    2018-10-12 17:27:04
    现在再有一个功能,不知道是集成方是想用.a 还是framework 就将两种都给实现了 ,这篇介绍.a文件的生产, framework生产 生产.a库 ...2 之后我们会看到自动生成.h和.m文件 可以在.m文件中写你要的...

    现在再有一个功能,不知道是集成方是想用.a 还是framework 就将两种都给实现了 ,这篇介绍.a文件的生产, framework生产

    生产.a库

    1.首先创建一个新的工程,选择ios --》Framework&Library --》 Cocoa Touch Static Library 工程名例如 DemoA
    选择如图
    项目命名

    2 之后我们会看到自动生成.h和.m文件 可以在.m文件中写你要的代码 或者新建.h和.m文件,将自动生成的删除了
    在这里插入图片描述
    3 咱们就再自动生成的文件中进行操作了
    .h 文件在这里插入图片描述
    .m 文件
    在这里插入图片描述
    4.选择需要公开的头文件

    在这里插入图片描述
    5 静态库需要支持的版本
    在这里插入图片描述
    6 修改配置 Active Architecture Only修改为NO,否则生成的静态库就只支持当前选择设备的架构。
    在这里插入图片描述
    7 接下来就是编译生成.a文件了
    1)真机编译的.a 文件 选中真机编译,对应生产一个真机的.a 文件
    在这里插入图片描述
    选择Generic iOS Device,command+b完成后,在工程的Products文件夹下的.a文件从红色编程了黑色。编译成功,然后Show in Finder。
    在这里插入图片描述
    下图是真机.a
    在这里插入图片描述

    2)模拟器编译的.a 文件 选中模拟器编译,对应生产一个模拟器的.a 文件
    在这里插入图片描述
    command+b完成后,在工程的Products文件夹下的.a文件从红色编程了黑色。编译成功,然后Show in Finder。对应的模拟器的.a文件
    在这里插入图片描述
    在这里插入图片描述
    8 用命令lipo -info 静态库名字来查看,是支持真机还是模拟器
    模拟器查看
    如图 Debug-iphonesimulator里面支持i386、x86_64,属于模拟器,用到真机会报错

    在这里插入图片描述
    Debug-iphoneos里面支持armv7、arm64,属于真机,用到模拟器就会报错
    9 合并静态库-让模拟器和真机使用一个静态库
    命令如下:
    lipo -create 第一个.a文件的绝对路径 第二个.a文件的绝对路径 -output 最终的.a文件路径
    在这里插入图片描述
    这个生成的.a文件,就是支持真机和模拟器的静态库了。创建一个文件夹,把.a和头文件拖进去,这个文件夹就是我们所需要的。一般上线的时候只导入真机的,这样工程的体积也会小一些。

    在这里插入图片描述

    如何使用静态库呢
    新建一个工程,把我们的静态库拖进去,导入头文件。
    在这里插入图片描述
    在这里插入图片描述
    运行效果
    在这里插入图片描述
    注意 如果静态库中有Category类,就要在使用静态库项目的配置中添加-ObjC或者-all_load

    如果有错误的地方欢迎指出,一起学习,一起进步。

    展开全文
  • 错误信息:找不到.h文件,但是pods里面也是导入了,这种错误
              错误信息:找不到.h文件,但是pods里面也是导入了,这种错误一般就是头文件配置的路径不对,需要在target文件的Tests目录下面找到Building Settings直接搜索search 即可出现search Paths然后在User Header Search Paths下面添加一个${SRCROOT} 后面选择recursive即可,这样就可以找到文件的路径了。
    
    展开全文
  • iOS - 关于header.h和pch

    2016-10-09 14:06:03
    引入普遍使用文件/* 第三方头文件 */ #import "MBProgressHUD.h" #import "AFNetworking.h" #import "UIImageView+AFNetworking.h" #import "SBJSON.h" #import "MJRefresh.h" #import "ASProgressPopUpView.h" #...

    header.h

    1.引入普遍使用文件

    /* 第三方头文件 */
    #import "MBProgressHUD.h"
    #import "AFNetworking.h"
    #import "UIImageView+AFNetworking.h"
    #import "SBJSON.h"
    #import "MJRefresh.h"
    #import "ASProgressPopUpView.h"
    #import "YYCycleScrollView.h"
    
    /* 网络数据 */
    #import "NTHttpRequest.h"
    #import "NTNetUtil.h"
    #import "LCDownloadManager.h"
    
    /* 工具 */
    #import "RMMapper.h"
    #import "Utils.h"
    #import "UIViewExt.h"
    #import "AppData.h"

    2.宏定义

    屏幕尺寸
    系统版本
    颜色
    文件路径

    //距离
    #define ScreenWidth [UIScreen mainScreen].bounds.size.width
    #define ScreenHeight [UIScreen mainScreen].bounds.size.height
    #define iPhone5sHight 568
    #define iPhone5sWigtht 320
    #define iPhone6sHight 667
    
    //屏幕尺寸相关
    #define KSCREENWIDTH  ([UIScreen mainScreen].bounds.size.width)
    #define KSCREENHEIGHT ([UIScreen mainScreen].bounds.size.height)
    #define KRATE (KSCREENWIDTH/320.0)
    
    //颜色
    #define SetColor(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]
    #define NavBackColor [Utils colorWithHexString:@"#07c8cf"]
    #define BackColor SetColor(247, 247, 247, 1)
    #define LineColor [Utils colorWithHexString:@"#ececec"]
    
    //文件路径
    #define recourcesPath [[NSBundle mainBundle] resourcePath]

    pch - Precompile Prefix Header

    Xcode 6去掉Precompile Prefix Header的主要原因在于:

    (1)去掉自动导入的系统框架类库的头文件,可以提高原文件的复用性,便于迁移。
    (2)一个肥胖无比的Prefix Header会大大增加Build Time。

    为了取代在Prefix Header中自动导入的框架,可以在每一个需要导入系统框架的文件中通过@import来手动导入,当然要确保Build Settings中的Enable Modules是打开的。

    如果在Prefix Header中导入了,那么我们在工程的每一个文件中可以免费获得使用的权利,而无需手动在每一个.h/.m文件中导入。该文件确有其方便之处。

    如果一定要用到Precompile Prefix Header,可以参考Xcode 5的配置来手动设置。

    (1)在工程中增加一个pch文件,命名还是按照Xcode 5的模板比较好:工程名-Prefix.pch,例如a-Prefx.pch
    (2)设置Build Settings
    其中Prefix Header指定pch文件的位置。
    这里写图片描述

    注意:开关Precompile Prefix Header时,pch的编译和导入机制是有很大不同的。
    如果Precompile Prefix Header为YES,那么pch会被预编译,预编译后的pch文件会被缓存起来,从而提高编译速度。可以从下面的Build Log中看出:
    这里写图片描述

    如果Precompile Prefix Header为NO,那么pch不会被预编译,而是在每一个用到它导入的框架类库的.m文件中编译一次。例如a-Prefix.pch导入了,ViewController.m和AppDelegate.m中都使用了objc_property_t这个类型(注意ViewController.h/m和AppDelegate.h/m都没有另外导入),那么在Build的过程中,在编译ViewController.m和AppDelegate.m时,a-Prefix.pch会被编译2次,每个.m文件编译一次。如下图:
    这里写图片描述
    由图可知,如果Precompile Prefix Header为NO,那么每个引用了pch内容的.m文件都要编译一次pch,可能Apple会另外做缓存机制,但是这样还是降低了编译的速度。
    既然Apple标准都建议我们不用pch了,那么还是尽量少用吧。当然,如果一定要用,还是尽量减少pch文件中的内容,降低工程对pch文件的依赖性,便于日后的迁移和解耦。

    展开全文
  • 在运行lib target项目的时候有一些.h文件会找不到。但是在正常taget中是没有问题的。 解决方案 在Stack Overflow上查了解决方案是在lib的target的Build Setting中搜索“Header Search Path”配置。于是笔者配置了...

    问题

    在运行lib target项目的时候有一些.h文件会找不到。但是在正常taget中是没有问题的。

    解决方案

    在Stack Overflow上查了解决方案是在lib的target的Build Setting中搜索“Header Search Path”配置。于是笔者配置了如下:(xxx表示库的名字)
    在这里插入图片描述
    但是在配置之后还是会有问题,查找了半天才找到问题所在。

    我们可以对照下再正常项目的target中“Header Search Path”的配置如下:
    在这里插入图片描述

    两者虽然在“Header Search Path”配置的内容是一样。
    但是真正灰色字体显示的路径确实不一样的,在真正的项目中的开头是"/Users/xxx",可以找到这个库的绝对路径。而在lib的target中,开头却是“/Headers/Public”。
    说明“${PODS_ROOT}”在lib项目中是不生效的。
    于是最终把地址改成了如下就可以了:
    在这里插入图片描述

    展开全文
  • Oc中导入Swift,”工程名-Swift.h文件找不到。 已知问题有两个 A.设置Product Module Name 为当前工程名。注意:工程名字不要含有特殊字符(例如 +)**Target-> Bulid Settings ->输入packa 设置Defines Module...

    Oc中导入Swift,”工程名-Swift.h” 文件找不到。
    已知问题有两个
    A.设置Product Module Name 为当前工程名。注意:工程名字不要含有特殊字符(例如 +)

    **Target-> Bulid Settings ->输入packa 设置Defines ModuleYes** 

    B. 如果未设置,或者更改了工程名字了,报错 找不到文件。尝试用以下命令找到”工程名-Swift.h” 文件,进行比对。

     cd ~/Library/Developer/Xcode/DerivedData
     find * -iname '*Swift.h'
    展开全文
  • 在众多开源的大神的博客里经整理如下:(已测试ok) ...制作.a静态库,需要要保证兼容性,包括不同iOS设备以及模拟器运行不出错,所以尽量做到最大的兼容性。 ValidArchitectures设置为:armv7|armv7s|arm6
  • iOS库 .a与.framework区别

    2017-10-31 18:03:45
    静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。 三、iOS里静态库形式? ...
  • .a 文件:纯二进制文件,需要配合 .h 文件一起使用,通过 .h 文件引用库里面的内容 .framework 文件:包含二进制文件 链接时,静态库会被完整地复制到可执行文件中,例如iOS程序打包的时候会包含所有引用的静态库 ...
  • iOS之宏定义#define

    2014-05-21 18:19:40
    最基本的宏定义用法 #define aaa bbb 表示用aaa替换bbb的内容. ...如果需要作用于整个工程,可以定义一个类如Config.h,在该类定义好需要的宏,然后在工程的XXX_Prefix.pch文件 #import
  • iOS 【AppDelegate.h/.m】

    2015-11-24 16:51:01
    创建应用程序之后之后,默认有AppDelegate.h文件与AppDelegate.m文件。   AppDelegate为何物? AppDelegate为整个应用的一个代理,提供程序启动、退出等类似监控的接口。         AppDelegate.m ...
  • 其中在Xcode6后已不再默认生成pch文件,下面介绍如何自己创建该文件。 1.选中项目文件,右击鼠标选中新建文件: 2.在Other项中,选择新建pch文件 3.新建后需在工程中做相关配置,点击工程文件来到...
  • ios开发中,我们难免会用到openssl静态库,libcrypto.a和libel.a这种静态库,所以会出现很多问题,例如#import这种东西找不到,就很头疼,今天我简单讲解一下! 至于openssl的库编译生成,我这边就不讲了,网上...
  • 犹记得在Xoce6之前,每当创建一个新的项目的时候,Xcode会自动在Supporting files文件夹下面再新建一个 "工程名 - Prefix.pch " 的文件,如果现在你还想实现这个功能,可能需要一些小小的配置 . 在需要配置PCH文件的...
  • 一、准备工作 1.下载最新的 gas-preprocessor.pl ...修改文件权限:chmod 777 /usr/bin/gas-preprocessor.pl 下载最新的 gas-preprocessor.pl 下载地址:http://git.libav.org/ 复制gas-preproc
  • 以前的项目中引入了C++ STL里的vector.h文件,在将XCode升级到4.2后,编译时出现这样的错误“vector.h file not found”,居然会有这么神奇的问题,以前都好好的,突然就不行了,查阅资料发现,原来是编译器的配置...
  • iOS中.gitignore的使用

    2016-01-28 09:41:23
    新建.gitignore然后再里面声明要忽略的文件夹或者文件,必须使用终端 在需要创建 .gitignore 文件的文件夹,进入命令行,进入项目所在目录。 输入 touch .gitignore 在文件夹就生成了一个“.gitignore”文件。 然后在...
  • 静态库可以将 .m文件封装成一个.a文件,第三方应用程序只需要拿到这个.a文件和代码对应的.h文件即可使用静态库中封装的方法。静态库适合制作SDK提供的第三方使用。 步骤如下:创建应用项目1.创建一个应用项目,也...
  • 一、背景需求介绍怎么让APP支持查看&打印word,pdf文档?iOS是有支持这个功能的控件QLPreviewController.配置:只需导入库: 二、示例代码如下:实现的功能是在一个webView中点击获取...在.h文件中 #import#import@interfac
  • iOS开发过程中,有些时候需要生成打包.a静态库,然后拖入到项目中使用,尤其是有时候引入的一些C++编译过的第三方文件就会引起编译错误的提示,解决这种问题的方法很简单,就是把这些三方的文件打包生成.a静态库...
  • 制作自己的静态库 ...2.创建的工程中会默认创建两个和工程名字一样的.h和.m文件,如果需要还可以根据自己的需要创建其他文件 3.在文件中编写自己的代码,这里我定义了一个方法,只是用于讲解制作的测试
1 2 3 4 5 ... 20
收藏数 33,295
精华内容 13,318
关键字:

.h文件配置 ios