在开发中经常用 target 区分正式、测试环境,用到自定义的预编译宏来判断,OC中可以在 target 的 Preprocessor Macros 里设置,Swift 则不同。
Swift设置预编译宏
本文以自定义 RELEASE_BETA
为例
- 选中 target ---> Build Settings ---> 搜索 Swift Compiler - Custom Flags
- 展开 Active Compilation Conditions 进行设置,只能这样写:
RELEASE_BETA
, 不能像OC一样设置RELEASE_BETA =1
- 展开 Other Swift Flags 同样设置
RELEASE_BETA
,需要这样写:-D RELEASE_BETA
,填完后是-D
和RELEASE_BETA
分成两行的,(如果项目中用到了CocoaPods
可以参考) - 设置完成
在用到的地方使用:
#if TEST
let BASEURL = ""
#else
let BASEURL = ""
#endif
如果是 OC 和 Swift 混编的项目,OC也需要用到,则还是在 Preprocessor Macros 里添加一遍。
pods组件中使用
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.name == 'Release_Beta'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = ['$(inherited)', 'RELEASE_BETA=1']
config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] = ['$(inherited)', 'RELEASE_BETA']
config.build_settings['OTHER_SWIFT_FLAGS'] = ['$(inherited)', '-D', 'RELEASE_BETA']
end
end
end
end