有一些文章介绍.xconfig文件的使用,如这篇,但是经过亲自实践,发现还是有一些坑,这里记录下。

构建新的configuration

这一步在“project-info-configuration”位置进行,点击“+”构建“-”消除,没什么问题,这个很简单也不会出错。

只是原来使用xcodebuild进行自动打包时的-configuration指的是就是这里啊。每个项目默认就有的Debug和Release配置。

这个Configuration是对于同一个项目的配置的一个完整的最高的总结了。

使用.xcconfig文件

新建这个文件很简单,xcode自带了这个模板。然后是在Configuration里配置,比如在debug时使用First.xcconfigrelease时使用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里的东西并没有变。

我就晕了,这到底怎么回事。

这里有两个坑

  1. 项目的Build Settings里直接写的内容是会优先显示的,就是说Xcode有一个默认的配置文件(yourAppName.xcodeproj/project.pbxproj),如果你直接在Build Settings里编辑,是写到它里面去,比如只是修改了other linker flag,再看github的修改:

这个文件里的配置会优先在Configuration里指定的.xcconfig文件里的配置,那要怎么使用.xcconfig文件里的配置?删掉Build Settings里的配置就好了。Command+delete搞定。

  1. 因为.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)来引用其他配置里的东西,那么也就可以在这里定义宏并且跟随其他配置而改变。

iOS使用 xcconfig配置文件的若干坑相关推荐

  1. iOS 9 适配中出现的坑

    整理 iOS 9 适配中出现的坑(图文) 2015-10-22 iOS开发 库克表示:"现在在中国有150多万的开发者在iOS当中开发应用程序,我们鼓励更多的人开发应用程序,也鼓励更多的创业 ...

  2. iOS 7 跳过的一个坑又掉里了 - 图片渲染模式

    iOS 7 跳过的一个坑又掉里了 - 图片渲染模式 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作 ...

  3. 思科路由器IOS系统和配置文件的备份、删除及还原

    思科路由器IOS系统和配置文件的备份.删除及还原 续上篇讲的思科路由器的密码重置,本篇讲一下思科路由器iOS系统的备份.删除 还原.在生产情况下,很少有iOS文件的丢失的,大多是人为的删除,可能是为了 ...

  4. ios Universal Link 配置教程 + 踩坑记录

    Univeral Link的配置有3方面:Apple Developer网站配置.XCode配置.服务器资源配置(apple-app-site-association文件创建和存放) 首先说下我们的需 ...

  5. iOS开发之UIRefreshControl使用踩坑

    问题描述 接上一个话题,实现了TabBar的点击刷新以后,开始继续写完成功能,刷新UITableView,于是考虑到iOS 10以后,UIScrollView已经有UIRefreshControl的属 ...

  6. iOS开发之Unity游戏在iOS平台运行调研(踩坑)

    需求 在现有App上运行自研的Unity游戏 注:此需求可能会由于一些原因而弃掉 方案 方案一.导出WebGL运行在WKWebView上(方案不适用) 结论: 不建议采用:不建议深挖 移动端网页仅适用 ...

  7. iOS 平台 接入新浪微博 SDK 的坑(registerApp 的问题)

    转载:http://leenjewel.github.io/blog/2015/01/08/ios-ping-tai-cocos2d-x-xiang-mu-jie-ru-xin-lang-wei-bo ...

  8. iOS端移动支付的一些坑

    已经很久没有写博客了,最近刚好工作比较轻松,希望能重新捡起来. 那么来简单说一下在iOS上做支付的一些东西 ( ̄▽ ̄*) 这里主要说支付宝和微信这样的第三方支付,像iOS本身的支付不做探究,话说,这个 ...

  9. iOS开发中 经常遇到的坑,看我就够了! 韩俊强的博客

    从事iOS开发有些年月了,从最开始的磕磕绊绊,不知所措,到现在的遇到困难都能快速做出最佳方案处理,中间经历了不可或缺的痛苦.在项目开发中,本人有用印象笔记记录的习惯,所以很多重复出现的坑,很快迎刃而解 ...

最新文章

  1. three.js 弹出二维图片
  2. 亲测SQLServer的最大连接数
  3. 注入安卓进程,并hook java世界的方法
  4. 牛客题霸 NC2 重排链表
  5. VTK:vtkAreaPicker用法实战
  6. PostgreSQL学习笔记7之函数和操作符三
  7. js映射 nginx_浅析nginx刚刚发布的JavaScript能力nginScript
  8. asp.net web常用控件FileUpload(文件上传控件)
  9. switch字符串jdk_JDK 12 Early Access Build 12中的原始字符串文字支持
  10. python-copy模块-待优化的功能
  11. pytorch将Tensor转为list
  12. 关于bash中if语法结构的广泛误解(转)
  13. 射手网字幕打包下载(73.16G)
  14. MT4系统自带指标代码
  15. er studio mysql逆向生成
  16. 射雕英雄传ol显示服务器断开,射雕英雄传OL6月18日维护更新内容
  17. 解决app安装失败,并出现Package [pkg1] attempting to redeclare permission [perm] already owned by [pkg2]异常的问题
  18. Android图形绘制之——简单的几何图形
  19. 树形结构的处理——组合模式(一)
  20. 数码相册项目(带密码登陆,代码已开源)

热门文章

  1. 我国java发展_Java在我国的应用现状和发展趋势
  2. 恩施软件开发人员每月多少钱_恩施建个大棚多少钱搭建、养猪大棚价格
  3. python xpath爬虫_Python爬虫(2):XPath语法
  4. vs工程移植报错:缺少MSVCP140D.dll ,CONCRT140D.dll ucrtbased.dll vcruntime140d.dll错误。
  5. 【知识便利贴】ImageNet得的比Best Paper还牛的Longuet-Higgins奖是啥?
  6. 【AI不惑境】残差网络的前世今生与原理
  7. 全球及中国医用腋拐行业竞争格局及供需前景预测报告2021年版
  8. 全球及中国晶圆键合和解键合设备行业竞争格局分析及投资前景评估报告2021年版
  9. CEF:给客户端内嵌一个Chrome吧
  10. 以色列对话国际农民丰收节贸易会-万祥军:谋定无中生有