【转】 IOS 项目配置--构建输出DIR
原文网址:http://blog.csdn.net/fengsh998/article/details/8868871
通常在情一般都不建议使用绝对路径,因为写死之后,换环境,换平台,又要重新修改路径,因此常常使用相对路径,哪么相对路径通常使用的就是环境变量了。
在Mac 中,xcode 中build settings里面就有好多环境变量。
下面主要是以xcode 4.2 --sdk 5.0 进行说明,因为不同的环境build settings不一样,但差别不大。
xcode 的build settings配置项有几种设置
1、使用.xcconfig的方式进行配置
2、系统自荐的方式
3、自定义的方式
默认情况下,创建工程都是以自荐的方式,即默认已经设置好这些配置了。
哪怎么设置自定义方式呢?
xcode->Preferences->locations->advanced(高级)然后在下拉列表中选择。
Derived Data Location (Recommended) ---系统自荐目录
Locations Specified by Targets ---使用targets文件进行设置,即我们每次建项目的时候都会产生一个targets,通过targets中的选项进行设定输出路径。
因为构选输出目录跟这个设置有关,所以先介绍这个设置。
实例来说明其中的作用:
1、选创建一个演示项目。如图:
存放目录为/Users/ffsh/Desktop/CProjectSet,其中ffsh为登录的用户名。
2、当xcode->Preferences->locations->advanced 中选择为Derived Data Location (Recommended) 时:
Derived data有三种选择如图:
a、当选择为default时,Derived Data的目录为 /Users/xxx/Library/Developer/Xcode/DerivedData
b、当选择为Relative时,Derived Data的目当为 当前.xcodeproj所在的目录。见图:
c、当选择为custom,即自定义,为了查看是否输出到自定义,我在Desktop下建了一个custom文件夹,然后设置Custom的输出路径为:/Users/ffsh/Desktop/Custom
同样可以把原来Derived Data下的东东全部输出到了custom。
上面是自荐的方式。
当xcode->Preferences->locations->advanced 中选择为Locations Specified by Targets时:
先来设置一下Build Products Path 中的值(默认为Build),这里取为myBuild.
然后分别将Derived Data设为:
a、default时,产生的mybuild 目录在.xcodeproj目录。
可以看到原来Derived Data目录下不现产生Build的文件夹了,些文件夹被放到了.xcodeproj目录。
b、Relative时,mybuild目录不变,但Derived Data目录放到了xcodeproj目录了。
c、custom时,把Derived data下的内容放到了custom目录。
如果Build Products Path 中的值为mybuild,但还是自荐方式的话,此时mybuild是不起作用的。
事实上,从上面大家可以知道,build出来的内容包括两个,一个是正式的,一个是临时的。可以在自荐的放式下看到
Build下有四个文件夹分别为:
filemaps
intermediates --编译中间产生的文件(temp)
precompileheaders
products --编译最终产生的文件。
设置Build Products Path路径,其实是把products中的内容放到这个路径下。
设置Intermediates Build files path ,其实是把intermediates中的内容放到这个目录下。
Build Locations中的4个设置项的值:
默认情况下的
以下用$(default) 代替 /Users/xxx/Library/Developer/Xcode/DerivedData/CProjectSet-erpfssifqoxezbcceyoqjoclrfds
$(SYMROOT) = $(default)/Build -- 对应于Build Products Path设置,如果为自荐方式,这个值填了无效果,如果为使用targets配置方式这里填的才起效果
$(SYMROOT)/intermediates ----中间构建文件存放路径,其中在Intermediates Build files path中只需要设为$(SYMROOT)即可,intermediates系统自动生成。
$(BUILD_DIR) = $(SYMROOT)/products
$(BUILD_ROOT) = $(BUILD_DIR)
$(CONFIGURATION) 当项目Build时选译Build configuration为Debug时值为Debug,当选为Release时,值为Release
$(EFFECTIVE_PLATFORM_NAME) 当模似器时为值为-iphonesimulator 当为真机时为-iphoneos
$(PROJECT_TEMP_DIR) = $(SYMROOT)/intermediates/xxxx.build 基中xxxx表过项目名称
$(CONFIGURATION_BUILD_DIR) = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) ---- (Per-Configuration Build Products Path)
$(CONFIGURATION_TEMP_DIR) = $(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) --(Per-Configuration Intermediate File Path)
自定义的情况下:
$(SYMROOT) = $(SRCROOT)/abc --- 其中abc为自己在Build Products Path中设置的值
$(BUILD_DIR) = $(SYMROOT)
$(BUILD_ROOT) = $(BUILD_DIR)
$(PROJECT_TEMP_DIR) = $(SYMROOT)/xxxx.build
通过自定义可以自行设定构建目录,便于管理。
iphoneos5.0下的编译脚本:
xcodebuild -project "UtilLib.xcodeproj" -configuration "Debug" -target "UtilLib" -sdk "iphoneos5.0" -arch "armv6 armv7" build RUN_CLANG_STATIC_ANALYZER=NO $(BUILD_DIR)="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
iphonesimulator5.0下的编译脚本:
xcodebuild -project "UtilLib.xcodeproj" -configuration "Debug" -target "UtilLib" -sdk "iphonesimulator5.0" -arch "i386" build RUN_CLANG_STATIC_ANALYZER=NO $(BUILD_DIR)="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
加上下面一句表示输出到文件:
> "${BUILD_ROOT}.build_output"
lipo脚本工具:合并iPhone模拟器和真机的静态类库,生成通用库
lipo -create -output "${CREATING_UNIVERSAL_DIR}/${EXECUTABLE_NAME}" "${CURRENTCONFIG_DEVICE_DIR}/${EXECUTABLE_NAME}" "${CURRENTCONFIG_SIMULATOR_DIR}/${EXECUTABLE_NAME}"
意思是:把"${CURRENTCONFIG_DEVICE_DIR}目录下的.a文件,和${CURRENTCONFIG_SIMULATOR_DIR}目录下的.a文件合并,
在${CREATING_UNIVERSAL_DIR}目录下,生成两个设备都通用的静态库,
例如:lipo -create -output xy.a x.a y.a
【转】 IOS 项目配置--构建输出DIR的更多相关文章
- Maven项目配置Logback输出JSON格式日志
最近,项目提出需求,日志需要固定输出为JSON格式,以便后端Flink程序解析. 项目背景 项目为简单的Maven项目,日志由Filebeat采集,因此不需要配置输出至Logstash. 下面为pom ...
- IOS项目自动构建
# Sets the target folders and the final framework product. # 如果工程名称和Framework的Target名称不一样的话,要自定义FMKN ...
- iOS学习——iOS项目Project 和 Targets配置详解
最近开始学习完整iOS项目的开发流程和思路,在实际的项目开发过程中,我们通常需要对项目代码和资料进行版本控制和管理,一般比较常用的SVN或者Github进行代码版本控制和项目管理.我们iOS项目的开发 ...
- 配置iOS项目的设备系统目标设置:Base SDK和Deployment Target
配置iOS项目的设备系统目标设置:Base SDK和Deployment Target Xcode为开发者提供了两个可配置的设置:第一个是Base SDK,第二个是iOS的Deployment Tar ...
- SpringBoot学习入门之Hello项目的构建、单元测试和热部署等(配图文,配置信息详解,附案例源码)
前言: 本文章主要是个人在学习SpringBoot框架时做的一些准备,参考老师讲解进行完善对SpringBoot构建简单项目的学习汇集成本篇文章,作为自己对SpringBoot框架的总结与笔记. 你将 ...
- jenkins的构建项目配置
继http://www.cnblogs.com/yajing-zh/p/5109517.html搭建好jenkins系统配置之后,新建jenkins构建项目,用于自动化构建. 点击Jenkins界面左 ...
- 使用IDEA构建Spring-boot多模块项目配置流程
使用IDEA构建Spring-boot多模块项目配置流程 1.创建项目 点击Create New Project 在左侧选中Spring Initializer,保持默认配置,点击下一步. 在Grou ...
- IOS整体项目层级构建
在创建IOS项目时,若有一个比较明确的层级架构,将对于今后代码的维护或者功能的扩展很有帮助:本文将通过一个实例来展现我对于层级的一些观点:里面有一些零碎的知识点可能无法全部介绍,到时提供源代码进行下载 ...
- Flask之项目配置,目录构建,闪现
综合案例:学生成绩管理 新建项目目录students,并创建虚拟环境 mkvirtualenv students 安装开发中使用的依赖模块 pip install flask==0.12.4pip i ...
随机推荐
- Map中放置类指针并实现调用
工作中使用到多进程通信,利用到了map以及multimap来进行实现. 需要做一个简单测试例子,直接上代码. /* * main.cpp * Created on: Oct 28, 2013 * Au ...
- poj 1511(SPFA+邻接表)
题目链接:http://poj.org/problem?id=1511 思路:题目意思很简单就是要求源点到各点的最短路之和,然后再求各点到源点的最短路之和,其实就是建两个图就ok了,其中一个建反图.1 ...
- QAQ OI生涯の最后一个月
QAQ 总觉得自己要做点什么 可是并不知道去做些什么 QAQ 先挖一些坑吧,不管怎么样,把这些坑填完估计NOI也就无憾了 1.读完13-16的论文 QAQ 2.做完12-16的POI QAQ 3.做 ...
- JVM生产环境参数实例及分析
java application项目(非web项目) 改进前: -Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweep ...
- 8天学通MongoDB
随笔分类 - MongoDB 双十一来了,别让你的mongodb宕机了 摘要: 好久没过来吹牛了,前段时间一直赶项目,没有时间来更新博客,项目也终于赶完了,接下来就要面临双十一这场惊心动魄的处女秀考验 ...
- WEB前端介绍
1.WEB前端是神马 Web前端开发是从网页制作演变而来的,名称上有很明显的时代特征.在互联网的演化进程中,网页制作是Web1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为 ...
- asp.net收藏和设为首页的代码
1:设为首页 <a href="javascript:void(0);" id="setHomePage" onclick="this.styl ...
- ASP.NET26个性能优化方法
1.数据库访问性能优化 (1)数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源. ASP.NET中提供了连 ...
- (五)ASP.NET中动态生成控件
今天被问到如何在ASP.NET 页面中动态创建一批控件,并且希望在后续代码中能访问到这些动态创建的控件.我用下面的例子来解释这个问题 ================================= ...
- SQLServer2008 行转列2
with a as ( select numb,name,row_number() over( partition by numb order by name desc) rowid from fen ...