Xcode 及 iOS 常用宏和常量

Xcode

Xcode 工程設置支持 bash 腳本及其語法,如 $(PROJECT_DIR)

INFO

param description
$CURRENT_PROJECT_VERSION 當前工程版本號
$SDK_NAME eg: iphonesimulator5.0
$PLATFORM_NAME eg:iphonesimulator
$EXECUTABLE_NAME eg:libUtilLib.a 可執行文件名
$IPHONEOS_DEPLOYMENT_TARGET eg:5.0
param description
$TARGET_NAME 目標 target 名稱
$CONFIGURATION 當前編譯配置文件名稱。eg:Debug、Release
$ACTION 當前編譯處於哪個階段。eg: build、compile
$NS_BLOCK_ASSERTIONS 控制斷言開、關(OC)

PATH

param description
$PROJECT_DIR 工程文件所在路徑
$SRCROOT 源代碼所在路徑,一般情況下和 $PROJECT_DIR 相同
$BUILT_PRODUCTS_DIR build 成功後的,最終產品路徑。包括 .app。可以在 Build Settings 下的 Build Products Path 中進行設置
$BUILD_DIR build 文件夾。$BUILT_PRODUCTS_DIR 是該文件夾的子文件夾
$BUILD_ROOT 一般和 $BUILD_DIR 相同(至於什麼時候不同還沒有詳細探究)
$SYMROOT 測設結果和上面相同

* @executable_path
這個變量表示可執行程序所在的目錄. 比如 /path/QQ.app/Contents/MacOS/。使用第三方動態庫時需要設置這個值

  • @loader_path
    這個變量表示每一個被加載的 binary (包括App, dylib, framework,plugin等) 所在的目錄.
    在一個程序中, 對於每一個模塊, @loader_path 會解析成不用的路徑, 而 @executable_path 總是被解析爲同一個路徑(可執行程序所在目錄). 比如一個會被多個程序調用的 plugin, 位於 /path/Flash Player.plugin/Contents/MacOS/Flash Player, 依賴 /path/Flash Player.plugin/Contents/Frameworks/XPSSO.dylib. 那麼 XPSSO.dylib 的 INSTALL_PATH 可以設置爲 @loader_path/../Frameworks, 這樣設置的話, 不論 Flash Player.plugin 目錄放到什麼位置, XPSSO.dylib 都能正確的被加載.

參考文章

Xcode Build Variables List

iOS

自定義日誌函數

#ifdef DEBUG
#define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d\t%s\n",[[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);
#else
#define NSLog(FORMAT, ...) nil
#endif

常量

如果需要預編譯的宏可以在工程的“Preprocessor Mcros”中設置,這裏需要注意:
1. Debug 模式系統會自動生成預編譯宏 DEBUG
2. 注意 Scheme 中可以自定義編譯狀態。默認情況下直接“run”爲 Debug 模式,會使用“Preprocessor Mcros”中爲 Debug 模式設置的宏

  • __IPHONE_3_0
    SDK 版本
#ifndef __IPHONE_3_0
// 說明當前 SDK 版本最高爲 2.x
#warning "This project uses features only available in iOS SDK 3.0 and later."
#endif
  • __OBJC__
    是否支持 Objective - C
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章