• Xcode 及 iOS 常用宏和常量


    Xcode

    Xcode 工程设置支持 bash 脚本及其语法,如 $(PROJECT_DIR)
    $(PROJECT_DIR)
    PROJECT_DIR 代表当前工程的绝对路径,所以 $(PROJECT_DIR)/../ 代表工程路径的上一级

    $(TARGET_NAME)
    目标工程名称

    $(SRCROOT)
    工程文件(比如Nuno.xcodeproj)的路径

    $(CURRENT_PROJECT_VERSION)
    当前工程版本号

    $(BUILT_PRODUCTS_DIR)
    build成功后的,最终产品路径--可以在Build Settings参数的Per-configuration Build Products Path项里设置

    @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 都能正确的被加载.

    build 相关

    当编译静态库,设备选模拟器(iPhone 5.0 Simulator),未设置任何Build Settings参数时,默认的基础路径:

    /Users/xxx/Library/Developer/Xcode/DerivedData/xxxWorkspace-caepeadwrerdcrftijaolkkagbjf

    下面用$()代替上面一长串东东

    $(SYMROOT) = $()/Build/Products

    $(BUILD_DIR) = $()/Build/Products

    $(BUILD_ROOT) = $()/Build/Products

    这三个变量中的$()不会随着Build Settings参数的设置而改变

    相反,以下可以通过设置而改变

    $(CONFIGURATION_BUILD_DIR) = $()/Build/Products/Debug-iphonesimulator

    $(BUILT_PRODUCTS_DIR) = $()/Build/Products/Debug-iphonesimulator

    $(CONFIGURATION_TEMP_DIR) = $()/Build/Intermediates/UtilLib.build/Debug-iphonesimulator

    $(TARGET_BUILD_DIR) = $()/Build/Products/Debug-iphonesimulator

    $(SDK_NAME) = iphonesimulator5.0

    $(PLATFORM_NAME) = iphonesimulator

    $(CONFIGURATION) = Debug

    $(TARGET_NAME) = UtilLib

    $(EXECUTABLE_NAME) = libUtilLib.a 可执行文件名

    ${IPHONEOS_DEPLOYMENT_TARGET} 5.0

    $(ACTION) = build

    $(CURRENTCONFIG_SIMULATOR_DIR) 当前模拟器路径

    $(CURRENTCONFIG_DEVICE_DIR) 当前设备路径

    $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME =

    $()/Build/Products/Debug-iphonesimulator

    $(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) = $()/Build/Intermediates/UtilLib.build/Debug-iphonesimulator

    NS_BLOCK_ASSERTIONS
    Foundation 框架已经定义好的预编译宏,可以关闭程序中 NSAssert

    参考文章

    XCode环境变量及路径设置

    iOS

    自定义日志函数

    #ifdef DEBUG
    #define NSLog(FORMAT, ...) fprintf(stderr,"%s:%d %s ",[[[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
    1
    2
    3
    4
    __OBJC__
    是否支持 Objective - C

  • 相关阅读:
    C#中静态变量 静态类 静态成员
    C#类型转换
    ASP.NET页面跳转及传值方式
    ADO.NET
    C#方法的参数类型
    Oracle %TYPE 和 %ROWTYPE
    静态页面与动态页面
    相对路径和绝对路径
    45 个非常有用的 Oracle 查询语句(转)
    ASP.NET MVC 之表格分页
  • 原文地址:https://www.cnblogs.com/xujinzhong/p/11155092.html
Copyright © 2020-2023  润新知