Xcode常用环境变量与常见使用场景

发布时间 2023-05-16 18:59:43作者: 滴水微澜
在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