Xcode常用環境變量與常見使用場景

在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
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章