iOS xcconfig编写示例教程

目录
  • 引言
    • 注释
    • include导入其他设置
    • 变量
    • 优先级(由高到低)

引言

xcconfig文件的语法比较简单,每个配置文件都由一系列键值分配组成,这些键值分配具有以下语法:

BUILD_SETTING_NAME = value

注释

xcconfig文件只有一种注释方式,就是//

include导入其他设置

在创建xcconfig文件的时候,可以根据需求,创建多个。也就意味着,可以通过include关键字导入其他的xcconfig内的配置。通过include关键字后接上双引号,如下例:

#include "Debug.xcconfig"

在搜索引入的文件时,如果是以/开头,代表绝对路径,例如:

// 表示确切的文件位置
#include "/Users/ws/Desktop/LoginApp-冲突/Pods/Target Support Files/Pods-LoginApp/Pods-LoginApp.debug.xcconfig"

或者通过相对路径,以${SRCROOT}路径为开始:

#include "Pods/Target Support Files/Pods-LoginApp/Pods-LoginApp.debug.xcconfig"

变量

变量定义,按照OC命名规则,仅由大写字母,数字和下划线(_)组,原则上大写,也可以不。字符串可以是"也可以是'号。

变量有三种特殊情况:

  • xcconfig中定义的变量与Build Settings的一致,那么会发生覆盖。可以通过$(inherited),让当前变量继承变量原有值。例如:
OTHER_LDFLAGS = -framework SDWebImage
OTHER_LDFLAGS = $(inherited) -framework AFNetworking
// OTHER_LDFLAGS = -framework SDWebImage -framework AFNetworking

注意️:有部分变量不能通过xcconfig配置到Build Settings中,例如:配置PRODUCT_BUNDLE_IDENTIFIER不起作用。

  • 引用变量,$()${}两种写法都可以:
VALUE=Cat
TEACHER=$(VALUE)-${VALUE}
  • 条件变量,根据SDKArchConfigration对设置进行条件化,例如:
// 指定`Configration`是`Debug`
// 指定`SDK`是模拟器,还有iphoneos*、macosx*等
// 指定生效架构为`x86_64`
OTHER_LDFLAGS[config=Debug][sdk=iphonesimulator*][arch=x86_64]= $(inherited) -framework "Cat"

注意️:在Xcode 11.4及以后版本,可以使用default,来指定变量为空时的默认值:

$(BUILD_SETTING_NAME:default=value)

优先级(由高到低)

  • 手动配置Target Build Settings
  • Target中配置的xcconfig文件
  • 手动配置Project Build Settings
  • Project中配置的xcconfig文件

以上就是iOS xcconfig编写示例教程的详细内容,更多关于iOS xcconfig编写的资料请关注我们其它相关文章!

(0)

相关推荐

  • iOS开发TableView网络请求及展示预加载实现示例

    目录 引言 传统的上拉加载更多 滑动过程中预加载 方法1(最简单.高效和最推荐): 方法2(自己计算实现,不推荐了): 下面是具体实现细节(此细节是针对上述方法2的) 总结 引言 2022.02.11更新:新增了最简单.高效和最推荐的方法. 2020.05.25更新:对总结进行了详细的补充. 传统的上拉加载更多 在iOS的开发过程中,如果用列表展示数据,此时一般的逻辑为上拉加载更多数据,配合MJRefresh就是在滑动到最底部时,触发加载更多的网络请求. 滑动过程中预加载 如果希望体验好一点,那

  • iOS无障碍适配西瓜视频Voice Over实践示例

    目录 一.Voice Over 简介 二.Voice Over 使用指南 Voice Over 开发环境配置 Voice Over 基本使用 —— 以西瓜为例 入门手势 进阶手势 三.快速适配 Voice Over / 无障碍 设置无障碍焦点 设置无障碍文案 调整焦点顺序 西瓜首页适配实战 搜索栏 频道栏 & 频道编辑器 作者动态栏 视频列表 四.Voice Over 相关协议介绍 UIAccessibility 无障碍标签标注 UIAccessibilityAction 无障碍手势响应 UIA

  • 浅析iOS的Xcconfig

    背景 在xcode中多人协作时,很容易发生冲突,尤其是项目的配置文件,仅仅是在build settings 修改一点东西就出现巨大的冲突,commit 时在project setting 中就会发现N多有时会有好几处修改,这时候xcconfig 就发挥强大的作用了,咱们就可以通过 xcconfig 文件来解耦工程设置 什么是Xcconfig xcconfig文件其实就是xcode里的config文件,本质是一个用来保存Build Settings键值对的纯文本文件.这些键值对覆盖Build Se

  • iOS开发多线程下全局变量赋值崩溃原理详解

    目录 问题 Demo 崩溃原因 崩溃路径 验证方式 其它测试 问题 Demo 在多线程下同时给全局变量赋值时会发生崩溃: static NSObject *_instance; - (void)foo { _instance = [[NSObject alloc] init]; } 崩溃原因 如下为源码的汇编代码: Demo-iOS`-[ViewController foo]: 0x104e4e088 <+0>: stp x29, x30, [sp, #-0x10]! 0x104e4e08c

  • 详解Java 10 var关键字和示例教程

    关键要点 Java 10引入了一个闪亮的新功能:局部变量类型推断.对于局部变量,现在可以使用特殊的保留类型名称"var"代替实际类型. 提供这个特性是为了增强Java语言,并将类型推断扩展到局部变量的声明上.这样可以减少板代码,同时仍然保留Java的编译时类型检查. 由于编译器需要通过检查赋值等式右侧(RHS)来推断var的实际类型,因此在某些情况下,这个特性具有局限性,例如在初始化Array和Stream的时候. 如何使用新的"var"来减少样板代码. 在本文中,

  • 最新版CKEditor的配置方法及插件(Plugin)编写示例

    FCKEditor重写了js框架,并改名为CKEditor.第一次在CKEditor网站上看到demo界面,就被CKEditor友好的界面和强大的功能所震撼.毫无疑问,CKEditor是当前互联网上最优秀的开源多媒体HTML编辑器. 本文记录配置CKEditor过程,并以文章分页插件为例,简要CKEditor Plugin编写过程. 从官网http://ckeditor.com/download下载最新版CKEditor,解压. 1. 调用CKEditor方法 在页面里加载核心js文件:<scr

  • iOS中SQLite使用教程

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl.C#.PHP.Java等,还有ODBC接口,同样比起Mysql.PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快.SQLite第一个Alpha版本诞生于2

  • iOS之Cocoapods安装教程(全面解析)

    网上关于cocoapods的教程很多,关于它的优点我不赘述:但是我根据多次安装的经验,把我遇到的问题写一下,希望对新手有所帮助: 1. 设置输入源(由于默认的gem资源是国外的,由于历史原因,访问比较慢,所以需要改为国内的) 删除原来的: $ sudo gem sources --remove https://rubygems.org/ 添加新的 $ sudo gem sources -a https://ruby.taobao.org/ 出现如下提示,即为设置成功 $ sudo gem sou

  • iOS 委托与文本输入(内容根据iOS编程编写)

    •文本框(UITextField) 本章节继续编辑 JXHypnoNerd .文件地址 . 首先我们继续编辑 JXHypnosisViewController.m 修改 loadView 方法,向 view 中添加一个 UITextField 对象: #import "JXHypnosisViewController.h" #import "JXHypnosisView.h" @interface JXHypnosisViewController () @end @

  • ios端ijkplayer编译教程

    第一步:打开IJKMediaPlayer,找到Edit Scheme,在Info选项下的Build Configuration中选择Release后关闭窗口. 第二步:分别在模拟器和真机下编译IJKMediaPlayer,并找到模拟器和真机对应的IJKMediaFramework.framework. 如下所示: 第三步:合成模拟器和真机下的framework,这样才可以在真机和模拟器下同时使用.我这里是将两个framework复制到桌面,合并的命令行如下所示: lipo -create /Us

  • 使用Python编写简单的画图板程序的示例教程

    从这次开始,我会由简单到困难(其实也不会困难到哪里去)讲几个例程,每一个例程都是我自己写(或者修改,那样的话我会提供原始出处)的,都具有一定的操作性和娱乐性.例程中汇尽量覆盖到以前所讲的pygame中方方面面,如果看到哪一步不明白,那就再回去复习复习,基本没有人会看一遍什么都记住什么都掌握的,重复是学习之母,实践是掌握一门技艺的最好手段! 这次就先从一个最简单的程序开始,说实话有些太简单我都不好意思拿出手了,不过从简单的开始,容易建立自信培养兴趣.兴趣是学习之母嘛.我们这次做一个画板,类似Win

  • Java Spring开发环境搭建及简单入门示例教程

    本文实例讲述了Java Spring开发环境搭建及简单入门示例.分享给大家供大家参考,具体如下: 前言 虽然之前用过Spring,但是今天试着去搭建依然遇到了困难,而且上网找教程,很多写的是在web里使用Spring MVC的示例,官方文档里的getting start一开始就讲原理去了(可能打开的方法不对).没办法,好不容易实验成功了,记下来免得自己以后麻烦. 添加依赖包 进入spring官网,切换到projects下点击 spring framework.官网上写的是以maven依赖的形式写

  • PHP邮箱验证示例教程

    在用户注册中最常见的安全验证之一就是邮箱验证.根据行业的一般做法,进行邮箱验证是避免潜在的安全隐患一种非常重要的做法,现在就让我们来讨论一下这些最佳实践,来看看如何在PHP中创建一个邮箱验证. 让我们先从一个注册表单开始: <form method="post" action="http://mydomain.com/registration/"> <fieldset class="form-group"> <lab

  • IOS安装CocoaPods详细教程

    一.简介 什么是CocoaPods CocoaPods是OS X和iOS下的一个第三类库管理工具,通过CocoaPods工具我们可以为项目添加被称为"Pods"的依赖库(这些类库必须是CocoaPods本身所支持的),并且可以轻松管理其版本. CocoaPods的好处 1.在引入第三方库时它可以自动为我们完成各种各样的配置,包括配置编译阶段.连接器选项.甚至是ARC环境下的-fno-objc-arc配置等. 2.使用CocoaPods可以很方便地查找新的第三方库,这些类库是比较&quo

随机推荐

其他