余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

Xcode Help 官方文档大全(第三十篇)----参考(二)

xiyangw 2022-12-03 13:26 12 浏览 0 评论

建立配置文件(xcconfig)格式参考

构建配置文件(也称为xcconfig文件)是一个纯文本文件,它定义并覆盖项目或目标的特定构建配置的构建设置。 这种类型的文件可以在Xcode之外编辑,并与源代码控制系统很好地集成。 构建配置文件遵循特定的格式化规则,如果没有,则会生成构建警告。

Xcode Help 官方文档大全(第三十篇)----参考(二)

注:要了解如何将构建配置文件添加到项目中,请参阅添加构建配置(xcconfig)文件。

注释

使用单行注释来包含应由生成系统忽略的注释或其他信息。 每条评论都以两个正斜杠(//)开始,并持续到该行的末尾。 例如:

//

// Config.xcconfig

// My iOS App//

// Created by Johnny Appleseed on 11/15/16.

// Copyright ? 2017 Apple. All rights reserved.

//

评论可以独立存在于一行上,也可以遵循构建设置值。 例如:

ASSETCATALOG_COMPILER_APPICON_NAME = MyAppIcon //这是一条评论。

指定生成设置值

构建配置文件不需要列出所有可能的构建设置。 它只需要包括你想要定制的。 每个版本设置值都以单行格式定义:

BUILD_SETTING_DECLARATION_NAME = BUILD_SETTING_VALUE_DEFINITION

例如:

ONLY_ACTIVE_ARCH = YES

有许多价值类型,但以下是最常见的

值类型 描述

布尔 值为YES或NO。

串 指定的文本值。

枚举(字符串) 预定义的文本值。

字符串列表 字符串值的空格分隔列表。 如果字符串列表中的字符串包含空格,则该字符串必须用引号括起来。

路径 文件或目录路径,采用POSIX格式。

路径列表 空格分隔的路径值列表。 如果路径列表中的路径包含空格,则该路径必须用引号括起来。

对于构建设置声明名称及其值定义,都会忽略前导空格和尾随空格。如果相同条件的构建设置(请参阅条件化构建设置值)被多次定义,则使用最终实例,而忽略所有其他条件。

注意:当您在项目编辑器的“生成设置”窗格中选择生成设置时,生成设置声明名称将显示在“快速帮助”检查器中。您还可以在“生成设置”参考中找到生成设置声明名称。

防止重写值

要保留现有项目或目标版本设置值作为新定义值的一部分,请使用格式为$(inherited)的变量:

BUILD_SETTING_DECLARATION_NAME = $(继承)ADDITIONAL_VALUE

例如:

OTHER_SWIFT_FLAGS = $(继承)-v

引用另一个构建设置的值

要引用另一个生成设置的值,请按照以下格式参考其他生成设置声明名称:

BUILD_SETTING_DECLARATION_NAME = $(OTHER_BUILD_SETTING_DECLARATION_NAME)

例如:

OBJROOT = $(SYMROOT)

其他构建设置值可以如下内联引用:

DSTROOT = /tmp/$(PROJECT_NAME).dst

要么:

CONFIGURATION_BUILD_DIR = $(BUILD_DIR)/ $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)

有条件地建立设定值

当一个平台针对一个平台时,项目可能需要以不同方式构建。为了实现这一点,构建系统支持以下条件:

条件 条件值

SDK 一个SDK,比如macos10.12或者iphoneos10.2。 要匹配给定平台的任何SDK,请提供星号(*)而不是版本。 例如,macos *的条件值匹配任何macOS SDK。

拱 一种体系结构,如x86_64或arm64。


条件显示在构建设置声明名称后面,并括在括号内。例如:

BUILD_SETTING_DECLARATION_NAME [CONDITIONAL = CONDITION_VALUE] = VALUE_DEFINITION

例如,下面一行将使用任何macOS SDK构建时,将OTHER_LDFLAGS构建设置的值设置为-lncurses:

OTHER_LDFLAGS [sdk = macosx *] = -lncurses

还可以使用以下格式指定多个条件:

BUILD_SETTING_DECLARATION_NAME [CONDITIONAL1 = CONDITION_VALUE1] [CONDITIONAL2 = CONDITION_VALUE2] = VALUE_DEFINITION

例如,当SDK匹配macosx *的值并且架构匹配x86_64的值时,以下行将OTHER_LDFLAGS构建设置的值设置为-lncurses:

OTHER_LDFLAGS [sdk = macosx *] [arch = x86_64] = -lncurses

包含来自其他构建配置文件的设置

构建配置文件可以从其他构建配置文件导入构建设置。要从另一个文件导入设置,请使用前缀#include,然后在引号中引用该文件。例如:

#include“MyOtherConfigFile.xcconfig”

如果在构建时未找到指定的文件,则会生成警告。要取消对构建配置文件丢失的警告,请在#include前缀后加一个问号(?)。例如:

#包括? “MyOtherConfigFile.xcconfig”

您可以使用文件名,相对路径和绝对路径来引用其他构建配置文件。

引用类型 描述 例

文件名

与当前版本配置文件位于同一文件夹中的版本配置文件的名称 #include“MyOtherConfigFile.xcconfig”

相对路径

构建配置文件相对于当前构建配置文件位置的路径。

#include“../MyOtherConfigFile.xcconfig”

绝对路径

磁盘上生成配置文件的绝对路径。

#include“/Users/MyUserName/Desktop/MyOtherConfigFile.xcconfig”

注意:在解释任何构建设置之前处理对其他构建配置文件的引用。

文本宏格式参考

文本宏可以包含任何有效的Unicode文本。它也可以包含其他文本宏。

包括其他文本宏

要包含其他文本宏,请在宏名称前后添加三个下划线(_)字符:

___ <宏名> ___

修改文字宏展开

您可以通过添加一个或多个修改器来修改文本宏的最终扩展。将一个修饰符添加到文本宏,方法是在宏的末尾放一个冒号(:),然后是修饰符。通过用逗号(,)分隔每个修饰符来添加多个修饰符。

<MACRO>:<改性剂> [,<改性剂>] ...

例如,下面的宏将从FILENAME宏中删除路径扩展名:

文件名:deletingPathExtension

要将上面修改的宏转换为有效的C标识符,请添加标识符宏:

FILENAME:deletingPathExtension,标识符

修饰符

bundleIdentifier:用连字符( - )替换任何非捆绑标识符字符。

deletingLastPathComponent:从扩展字符串中删除最后一个路径组件。

deletionPathExtension:从扩展字符串中删除任何路径扩展。

deletedTrailingDot:删除任何尾随点(。)。

标识符:用下划线(_)替换任何非C标识符字符。

lastPathComponent:仅返回扩展字符串的最后一个路径组件。

pathExtension:返回扩展字符串的路径扩展。

rfc1034Identifier:用连字符( - )替换任何非rfc1034标识符字符。

xml:用相应的转义字符串替换特殊的xml字符。例如,小于(<)被替换为&lt;

文本宏引用

版权

使用项目组的公司名称的版权字符串。如果没有公司名称,则字符串为空。

该示例显示了公司设置为“Apple”时的版权字符串。

版权所有?2017 Apple。版权所有。

日期

当前日期。

DEFAULTTOOLCHAINSWIFTVERSION

用于默认工具链的Swift版本。

FILEBASENAME

没有任何扩展名的当前文件的名称。

FILEBASENAMEASIDENTIFIER

当前文件的名称,编码为C标识符。

FileHeader里

文本放置在每个新文本文件的顶部。

文件名

当前文件的全名。

FULLUSERNAME

当前macOS用户的全名。

NSHUMANREADABLECOPYRIGHTPLIST

macOS应用程序目标的Info.plist文件中用于人类可读的版权字符串的条目。宏的值必须包含plist的XML分隔符。例如,一个有效的值是:

<键> NSHumanReadableCopyright </键>

<string>版权所有?2017 Apple Inc.保留所有权利。</ string>

请注意,该值包含换行符。

机构名称

用于供应配置文件的团队的公司名称。

包裹名字

当前方案构建的包的名称。

PACKAGENAMEASIDENTIFIER

由当前方案构建的包名的C标识符编码版本。

产品名称

由当前方案构建的产品的应用程序名称。

项目名

当前项目的名称。

RUNNINGMACOSVERSION

运行Xcode的macOS版本。

TARGETNAME

当前目标的名称。

时间

目前的时间。

用户名

当前macOS用户的登录名。

UUID

返回一个唯一的ID。这个宏第一次被使用,它在返回之前生成ID。您可以使用此宏通过使用修饰符来创建多个唯一ID。每个修饰符都会返回该修饰符唯一的ID。例如,第一次使用UUID:firstPurpose修饰符时,宏将生成并返回该宏和修饰符组合的唯一ID。 UUID:firstPurpose修饰符的后续使用返回相同的ID。添加UUID:secondPurpose修饰符会生成并返回一个对UUID唯一的不同ID:secondPurpose,并且与UUID:firstPurpose的ID不同。

工作区名

当前工作区的名称。如果只有一个项目打开,那么当前项目的名称。

本年度为四位数字。

相关推荐

spring利用spring.handlers解析自定义配置(spring validation 自定义)

一、问题我们在spring的xml配置文件里经常定义各种各样的配置(tx、bean、mvc、bean等等)。以及集成第三方框架时,也会看到一些spring之外的配置,例如dubbo的配置、securi...

「Spring源码分析」AOP源码解析(上篇)(spring源码深度解析(第2版))

前言前面写了六篇文章详细地分析了SpringBean加载流程,这部分完了之后就要进入一个比较困难的部分了,就是AOP的实现原理分析。为了探究AOP实现原理,首先定义几个类,一个Dao接口:1&nbs...

Spring 解析注册BeanDefinition这一篇就Over
Spring 解析注册BeanDefinition这一篇就Over

一、简介:学习过Spring框架的人一定都会听过Spring的IoC(控制反转)、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC、...

2023-03-20 14:53 xiyangw

域、模块、空间、闭包,你真的懂了吗?(模块控制域与作用域的关系)

Javascript有一个特性叫做域。尽管对于初学者来说理解域是有难度的,但我会尽力用最简单的方式让你理解域。理解域能让你的代码更优秀,减少错误,及有助于你做出更强大的模式设计。什么是域域是在运行时,...

这一次搞懂Spring自定义标签以及注解解析原理
这一次搞懂Spring自定义标签以及注解解析原理

前言在上一篇文章中分析了Spring是如何解析默认标签的,并封装为BeanDefinition注册到缓存中,这一篇就来看看对于像context这种自定义标签是如...

2023-03-20 14:53 xiyangw

前端基础进阶(七)-前端工程师最容易出错的问题-this关键字
前端基础进阶(七)-前端工程师最容易出错的问题-this关键字

我们在学习JavaScript的时候,因为对一些概念不是很清楚,但是又会通过一些简洁的方式把它给记下来,那么这样自己记下来的概念和真正的概念产生了很强的偏差.当...

2023-03-20 14:52 xiyangw

深入K8s:守护进程DaemonSet及其源码分析(k8s 进程)
深入K8s:守护进程DaemonSet及其源码分析(k8s 进程)

建议学习:膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了最近也一直在加班,处理项目中的事情,发现问题越多越是感觉自己的能力不足,...

2023-03-20 14:52 xiyangw

Spring 是如何解析 bean 标签的?(spring beans标签)
Spring 是如何解析 bean 标签的?(spring beans标签)

前情回顾上回「SpringIoC容器初始化(2)」说到了Spring如何解析我们定义的<bean>标签,代码跟进了一层又一层,跋山涉水,...

2023-03-20 14:52 xiyangw

快速了解JavaScript文本框操作(javascript文本框代码)
快速了解JavaScript文本框操作(javascript文本框代码)

HTML中使用<input>元素表示单行输入框和<textarea>元素表示多行文本框。HTML中使用的<input&...

2023-03-20 14:51 xiyangw

荐读|30道JavaOOP面试题,可以和面试官扯皮了
荐读|30道JavaOOP面试题,可以和面试官扯皮了

面试是我们每个人都要经历的事情,大部分人且不止一次,今天给大家准备了30道JavaOOP面试题,希望能够帮助到对Java感兴趣的同学,让大家在找工作的时候能够...

2023-03-20 14:51 xiyangw

源码系列——mybatis源码刨析总结,下(mybatis源码分析)
源码系列——mybatis源码刨析总结,下(mybatis源码分析)

接上文简答题一.1.Mybatis动态sql是做什么的?1.动态sql就是根据条件标签动态的拼接sql,包括判空,循环,拼接等2.哪些动态sql?动态sql大...

2023-03-20 14:50 xiyangw

Java面试题(第二弹)(java面试题及答案整理)
Java面试题(第二弹)(java面试题及答案整理)

1.抽象类和接口的区别?接口可以被多重implements,抽象类只能被单一extends接口只有定义,抽象类可以有定义和实现接口的字段定义默认为:public...

2023-03-20 14:50 xiyangw

mybatis3 源码深度解析-动态 sql 实现原理(sql数据库基础知识)
mybatis3 源码深度解析-动态 sql 实现原理(sql数据库基础知识)

大纲动态sql使用示例SqlSource和BoundSql以及实现类LanguageDriver以及实现类SqlNode以及实现类动态sql解...

2023-03-20 14:50 xiyangw

第43节 Text、Comment及CDATASection(第43节 Text、Comment及CDATASection)
第43节 Text、Comment及CDATASection(第43节 Text、Comment及CDATASection)

本内容是《Web前端开发之Javascript视频》的课件,请配合大师哥《Javascript》视频课程学习。文本节点用Text类型表示,包含的是可以按字面解释...

2023-03-20 14:49 xiyangw

Qt读写三种文件(qt读取文件数据并赋值给变量)

第一种INI配置文件.ini文件是InitializationFile的缩写,即初始化文件。除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要...

取消回复欢迎 发表评论: