修改XCode的Product的输出目录(有时不生效需看)
通常在情一般都不建议使用绝对路径,因为写死之后,换环境,换平台,又要重新修改路径,因此常常使用相对路径,哪么相对路径通常使用的就是环境变量了。
在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
修改XCode的Product的输出目录(有时不生效需看)的更多相关文章
- CMD命令之 :修改windows的CMD窗口输出编码格式为UTF-8
修改windows的CMD窗口输出编码格式为UTF-8 转载自 http://xuliduo.iteye.com/blog/639923 dos命令: chcp 65001 就是换成UTF-8代码页 ...
- node.js小工具--修改Xcode 'Create by'作者名称
简介 用Xcode创建源文件时会自动在文件开始位置加入如下注释: // // ISSImageCycleScrollView.m // SoftTravel // // Created by iss1 ...
- VS生成项目时,有些文件无法复制到输出目录的解决办法
有时候,我们在生成项目时,发现有些文件如:.jpg的图片文件,无法复制到输出目录中,此时会非常纠结,反复的清理项目,重新生成,依旧不能解决此问题.后来我打开.csproj的项目工程文件时,经过对比发现 ...
- 在 Visual Studio 生成项目时,会发现一些 dll 并没有被复制到输出目录,导致最终程序的执行错误
发现与解决 检查了一下项目文件,发现是因为这些 dll 文件的引用其中一个叫做 嵌入互操作类型(EmbedInteropTypes)的属性被设为了 True,此时 复制本地 属性会被强制设为 Fals ...
- SpringBoot日志配置(详解) 涉及控制台输出日志、生成日志文件、日志级别修改、hibernate日志不输出
写在前面 本篇主要讲述日志配置,看完本篇可以解决下述问题, 控制台输出日志.生成日志文件.日志级别修改.hibernate日志不输出 Git Demo Path:https://github.com/ ...
- gradle + mybatis 复制xml等配置文件到输出目录
问题 部署项目并启动项目后,使用mybatis时候,报一个错误:org.apache.ibatis.binding.BindingException: Invalid bound statement ...
- qt creator设置默认输出目录
note creator version : 4.13.1 敲黑板,一定要先配置好 Qt creator的default build directory , 再创建项目,最后再编译 敲黑板,一定要先配 ...
- 【Tip】如何让引用的dll随附的xml注释文档、pdb调试库等文件不出现在项目输出目录中
项目输出目录(bin/debug|release)中经常是这个样子: main.exemain.pdb a.dll a.xml b.dll b.pdb b.xml ... 其中xml是同名dll的注释 ...
- HDInsight 指定输出目录 insert overwrite
基本语法 insert overwrite local directory '/example/demo/' select * from table; 可以格式化输出 insert overwrite ...
随机推荐
- push 到下一界面明显卡顿的现象
今天搭建界面,界面间的跳转使用了 push方法,结果发现界面间转换时有明显的卡顿现象,并没有做过数据请求之类的处理,所以感觉好神奇.以前好像也遇到过,当时在push 到的下级界面加个背景色.现在重新这 ...
- unity3d中串口的使用
工作中遇到了串口的问题,通过查资料&实验写出了下面代码: 关于串口的代码我在网上看了好多,一种是用事件来做,另外一种使用线程来做:(经过试验,unity无法用串口自带的事件进行数据读取): 看 ...
- Something about pip in Python
学习python爬虫框架scrapy的时候,用到pip管理工具来安装scrapy.最直观的感受,pip有点类似于Ubuntu下的apt-get工具,几行代码,自动下载.安装相关的东西.网上查了一些背景 ...
- TodoMVC中的Backbone+MarionetteJS+RequireJS例子源码分析之一
Marionette牵线木偶,Backbone是脊骨的意思,Marionette是基于Backbone做扩展库,可以理解为把脊骨骨架绑线扯着变成牵线木偶动起来哈哈,使backbone更易使用呵呵! 构 ...
- iOS 自定义的CodeSnippets添加按下tab键切换到指定输入位置
在需要使用tab来选中并输入内容的地方,添加: <#输入待覆盖的内容#>
- 创业方向:O2O及移动社交 from 沈博阳
十个最大的互联网公司,六个在美国,四个在中国 中国创业的特殊 市场巨大self-contained,做足中国市场就很够 ... ... 监管 领导力,人的要求 之前成功带领过团队 有海外的工作经历 ...
- 设置R启动时自动加载常用的包或函数
在我前面的文章(http://www.cnblogs.com/homewch/p/5749850.html)中有提到R可以自定义启动环境,需要修改R安装文件中的ect文件夹下的配置文件Rprofile ...
- 2016 ccpc 网络选拔赛 F. Robots
Robots Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Subm ...
- MFC的本质
一.引言 上一专题中,纯手动地完成了一个Windows应用程序,然而,在实际开发中,我们大多数都是使用已有的类库来开发Windows应用程序.MFC(Microsoft Foundation Clas ...
- (转)完全用GNU/Linux工作 by 王珢
完全用GNU/Linux工作 王珢 (看完这篇博文,非常喜欢王珢的这篇博客,也我坚定了学gnu/linux的决心,并努力去按照国外的计算机思维模式去学习编程提高自己.看完这篇文章令我热血沸腾 ...