内容简介:有一些文章介绍.xconfig文件的使用,如这篇,但是经过亲自实践,发现还是有一些坑,这里记录下。这一步在“project-info-configuration”位置进行,点击“+”构建“-”消除,没什么问题,这个很简单也不会出错。只是原来使用
有一些文章介绍.xconfig文件的使用,如这篇,但是经过亲自实践,发现还是有一些坑,这里记录下。
构建新的configuration
这一步在“project-info-configuration”位置进行,点击“+”构建“-”消除,没什么问题,这个很简单也不会出错。
只是原来使用 xcodebuild
进行 自动打包 时的 -configuration
指的是就是这里啊。每个项目默认就有的 Debug和Release
配置。
这个 Configuration
是对于同一个项目的配置的一个完整的最高的总结了。
使用.xcconfig文件
新建这个文件很简单,xcode自带了这个模板。然后是在 Configuration
里配置,比如在 debug 时使用 First.xcconfig
在 release 时使用 Second.xcconfig
,如图:
这一步也简单。但是我开始使用的时候,思维就走错方向了:
根据各种文章的指示,配置文件(.xcconfig)里面的内容会覆盖当前的 Build Settings
里面的东西,所以我以为是我在配置文件里面写了一个配置,那么 Build Settings
里面的东西会跟着变。
比如我现在是 Debug
环境,然后对应的就是 First.xcconfig
,我在它里面写入:
//:configuration = Debug OTHER_LDFLAGS = -Objcxxx //:configuration = Release OTHER_LDFLAGS = -Objcxxx //:completeSettings = some OTHER_LDFLAGS 复制代码
其实就是 Other Linker flags
的配置,可是外面 Build Settings
里的东西并没有变。
我就晕了,这到底怎么回事。
这里有两个坑
- 项目的
Build Settings
里直接写的内容是会优先显示的,就是说Xcode有一个默认的配置文件(yourAppName.xcodeproj/project.pbxproj),如果你直接在Build Settings
里编辑,是写到它里面去,比如只是修改了other linker flag
,再看github的修改:
这个文件里的配置会优先在 Configuration
里指定的 .xcconfig
文件里的配置,那要怎么使用 .xcconfig
文件里的配置?删掉 Build Settings
里的配置就好了。 Command+delete
搞定。
-
因为
.xcconfig
配置文件很难写,主要是各种配置名你记不住,所以就到实际的Build Settings
里面去拷贝,就在对应的配置项Command+C
就有了,所以内容就变成了上面那样,我以为3句话是在不同环境下起作用的,是互不干扰的,其实是OTHER_LDFLAGS
设了3遍,左后一次生效,最后是啥?空的啊,所以即使删除了Build Settings
里的内容也不出现,我还以为.xcconfig
文件没起作用!所以改成:
OTHER_LDFLAGS = -Objcxxx
然后就有了。
环境切换配置也跟着切换?
首先使用配置文件的作用就是,在环境切换后,配置可以跟着一整套的切换, .xcconfig
就相当于一个把相关的配置打包了。
这里就有了另一个坑,或者说理解失误:
我以为是你在 Build Configuration 里选择什么,那么 Build Settings 里的内容会跟着改变。
实际上 Build Settings 还是原来那样,改变的是每一项里面的内容,比如First.xcconfig配置里写入 OTHER_LDFLAGS = -Objc_first
,而Second.xcconfig里写入 OTHER_LDFLAGS = -Objc_second
,在外面看到的是这样的:
每一项配置里面会再分成Debug、Release等不同的Configuration,而不是 Build Settings 整体切换了。
或者说这是一个结构上的问题,让新接触者会改不清楚Xcode到底是什么做到不同情况使用不同配置的。
整个配置的结构
实际结构是这样:
- 最上层就是 Project-info-Configuration 里的配置了
- 然后每个配置里可以有不同配置文件(.xcconfig),每个 target 一个配置文件
- 然后是每个配置文件里面有许多的配置项
但是在 Build Settings 的显示里,这个结构是倒过来的:
- 配置文件
- 配置项
- 不同Configuration
另外,关于宏
在整个 Build Settings 里,可以在代码里直接使用的, Preprocess Mcros
就是其中之一。
在这里定义不同的宏,就可以在代码里由此做不同处理,比如默认的 DEBUG
宏就经常用来做条件编译。
在 Build Settings 里可以 $(xxx)
来引用其他配置里的东西,那么也就可以在这里定义宏并且跟随其他配置而改变。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Computer Age Statistical Inference
Bradley Efron、Trevor Hastie / Cambridge University Press / 2016-7-21 / USD 74.99
The twenty-first century has seen a breathtaking expansion of statistical methodology, both in scope and in influence. 'Big data', 'data science', and 'machine learning' have become familiar terms in ......一起来看看 《Computer Age Statistical Inference》 这本书的介绍吧!
在线进制转换器
各进制数互转换器
图片转BASE64编码
在线图片转Base64编码工具