在Xcode的工程配置中,与路径相关的都是使用环境变量,这样可以避免使用决定路径时项目移植性差的问题。
Xcode常用宏
__FILE__ 当前文件所在目录
__DATE__ 编译日期的字符串,格式为“mm dd yyyy”(例如:“Sep 16 2015”)
__FUNCTION__ 当前函数名称
__LINE__ 当前语句在源文件中的行数
___FILENAME___ 文件名,包括扩展名 如 abc.h, abc.m
___FILEBASENAMEASIDENTIFIER___ 文件名, 不包括扩展名, 如 abc
___PROJECTNAME___ 项目名称
Xcode环境变量说明
$(SRCROOT) 工程所在位置,也就是.xcodeproj所在目录
$(PROJECT_DIR) 与 $(SRCROOT) 一样
$(TARGETNAME) 工程名称
$(TARGET_BUILD_DIR) target构建生成路径
$(PROJECT_TEMP_DIR) 工程生成临时文件的路径
$(CONFIGURATION) 配置类型,一般为”Debug” 或 “Release”
$(inherited):继承,target默认不继承project, 需要在设置中显示添加才能继承。常用与对Search Paths项的设置
运行时环境变量
OBJC_PRINT_OPTIONS 输出OBJC已设置的选项
OBJC_PRINT_IMAGES 输出已load的image信息
OBJC_PRINT_LOAD_METHODS 打印 Class 及 Category 的 + (void)load 方法的调用信息
OBJC_PRINT_INITIALIZE_METHODS 打印 Class 的 + (void)initialize 的调用信息
OBJC_PRINT_RESOLVED_METHODS 打印通过 +resolveClassMethod: 或 +resolveInstanceMethod: 生成的类方法
Apple官方说明:
https://developer.apple.com/library/archive/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/0-Introduction/introduction.html
设置环境的业务场景
为项目添加.pch全局引入
1.创建“工程名字-Prefix.pch”
2.添加.pch的路径,在Build Settings中搜索Prefix Header, 然后在该项中输入“(SRCROOT)/项目名称/pch文件名”,例如“(SRCROOT)/iBlog/iBlog-Prefix.pch”
3.设置将Precompile Prefix Header 为YES, 预编译pch
对Search Paths项的设置
主要使用的配置项目
Header Search Paths
Library Search Paths
Framework Search Paths
如果项目里没有对Framework或.a的依赖,这里使用默认就可以了,如果添加了依赖,那么这里会自动添加这些依赖的路径。
本地构建产物目录设置
默认情况下Build Locations中的4个设置项的值:
以下用$(default) 代替 /Users/xxx/Library/Developer/Xcode/DerivedData/bsdiff-brsmjsvhtefeftfpbmcygaiewpum
$(SYMROOT) = $(default)/Build
$(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)
参考文章:
https://www.jianshu.com/p/f2aff309171c
https://www.cnblogs.com/cy568searchx/p/5889002.html
 

Xcode常用环境变量与常见使用场景的更多相关文章

  1. Maya 常用环境变量详解

    Maya 常用环境变量详解 前言: Maya 的环境变量让用户可以很方便的自定义 Maya 的功能. 在 Maya 的 Help 帮助文档中有专门的一个章节< Environment Varia ...

  2. cmake 常用变量和常用环境变量查表手册

    cmake 常用变量和常用环境变量查表手册 一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定 ...

  3. ROS(Robot Operating System)常用环境变量介绍

    本文简单介绍ROS系统中常用的环境变量用途及设置方式.ROS系统环境中除了必须配置的环境变量以外,其他的也是十分有用,通过修改变量路径,可以设置ROS系统中log文件存放路径,单元测试结果存放路径等. ...

  4. cmake 常用变量和常用环境变量查表手册---整理 .

    一,cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定义变量的方式: 主要有隐式定义和显式定义两种 ...

  5. [转]ROS(Robot Operating System)常用环境变量介绍

    本文简单介绍ROS系统中常用的环境变量用途及设置方式.ROS系统环境中除了必须配置的环境变量以外,其他的也是十分有用,通过修改变量路径,可以设置ROS系统中log文件存放路径,单元测试结果存放路径等. ...

  6. CMake学习笔记二:cmake 常用变量和常用环境变量

    1 cmake 变量引用的方式 使用 ${} 进行变量的引用.在 IF 等语句中,是直接使用变量名而不通过 ${} 取值. 2 cmake 自定义变量的方式 主要有隐式定义和显式定义两种,举一个隐式定 ...

  7. (四)linux的常用环境变量及设置

    一.为什么要设置环境变量 1.环境变量能解决什么问题? 你是否经历过输入$python命令后,屏幕上打印出python:command not found的尴尬:每一次都要输入$/home/tools ...

  8. windows常用环境变量

    %ALLUSERSPROFILE%列出所有用户Profile文件位置. %APPDATA%列出应用程序数据的默认存放位置. %CD%列出当前目录. %CLIENTNAME%列出联接到终端服务会话时客户 ...

  9. Bash基础——Shell脚本内部常用环境变量

    $@和$*区别 不加引号的时候没区别 #! /usr/bin/bash function print_args_at { printf "%s\n" $@ echo $@ } fu ...

  10. Linux 常用环境变量

    /etc/profile.d/start.sh # java export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$CLASSPATH:$JAVA_H ...

随机推荐

  1. 正泰电力携手图扑:VR 变电站事故追忆反演

    VR(Virtual Reality,虚拟现实)技术作为近年来快速发展的一项新技术,具有广泛的应用前景,支持融合人工智能.机器学习.大数据等技术,实现更加智能化.个性化的应用.在电力能源领域,VR 技 ...

  2. 清洁低碳环保新能源,3D 光伏与光热发电站可视化

    前言 碳达峰.碳中和成为今年两会"热词",在国家政府工作报告中指出,扎实做好碳达峰.碳中和各项工作,制定 2030 年前碳排放达峰行动方案,优化产业结构和能源结构,实现低碳环保节能 ...

  3. vue-devtools调试工具

  4. ThreadLocal应用及理解

    转载请注明出处: 1. 先展示threadLocal的一个简单封装,该封装用来在不同的请求线程中解析用户参数.在请求经过过滤器时, 对用户的信息进行设置入 ThreadLocalContext 中,可 ...

  5. c#(nanoframework)安装单片机环境;如何使用c#写类似于c的单片机驱动

    .NET nanoFramework 安装教程 准备材料​ esp32单片机(支持wifi蓝牙) 安卓数据线(需要支持传输) 注意!请先安装esp32驱动程序​ ESP32驱动链接 安装 .NET n ...

  6. 问题--VSCODE编写C含scanf无终端跳出

    1.问题 在VSCODE中编写C程序,用到scanf输入时,发现无终端输入数据 2.解决方法 在设置里搜索RunInTerminal,勾选该选项即可

  7. Linux复习笔记

    Linux复习笔记 常识说明 目录结构 Linux以树型结构管理文件,其最上层文件夹为 / ,也就是根目录. 如图所示,图中展示了一部分文件夹的结构: 所有的文件夹都属于根目录的子文件夹. 安装好系统 ...

  8. [转帖]Region 性能调优

    https://docs.pingcap.com/zh/tidb/v6.5/tune-region-performance 本文介绍了如何通过调整 Region 大小等方法对 Region 进行性能调 ...

  9. [转帖]一文快速入门 ClickHouse

    https://zhuanlan.zhihu.com/p/621480049 什么是clickhouse ClickHouse是一种OLAP类型的列式数据库管理系统,这里有两个概念:OLAP.列式数据 ...

  10. 【转帖】一道面试题:JVM老年代空间担保机制

    面试问题 昨天面试的时候,面试官问的问题: 什么是老年代空间担保机制?担保的过程是什么? 老年代空间担保机制是谁给谁担保? 为什么要有老年代空间担保机制?或者说空间担保机制的目的是什么? 如果没有老年 ...