私有CocoaPods库使用二

目的

优先于Masonry的编译定义宏

使用场景

由于项目原因, 必须使用动态库, 所以Podfile文件中添加了use_frameworks!
. 在使用use_frameworks!后, Masory的编译链接优先于PCH, 所以导致就算在PCH中加上了这个宏#define MAS_SHORTHAND也无法使用Masonry提供的精简写法

场景补充1

use_frameworks!

  • CocoaPods导入swift框架到swift项目和OC项目都必须要 use_frameworks!
  • 使用 dynamic frameworks,必须要在Podfile文件中添加 use_frameworks!
场景补充2

只要添加了#define MAS_SHORTHAND这个宏,就不用带mas_前缀
只要添加了#define MAS_SHORTHAND_GLOBALS这个宏,equalTo就等价于mas_equalTo
所以项目中一般这么写

// 只要添加了这个宏,equalTo就等价于mas_equalTo 不用@()
#define MAS_SHORTHAND_GLOBALS
// 这个头文件一定要放在上面两个宏的后面
#import <Masonry/Masonry.h>

Masonry源码

源码

解决方法

podspec提供了相应的配置
GCC预编译头参数GCC_PREPROCESSOR_DEFINITIONS

#pod中的macro
s.pod_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'MAS_SHORTHAND_GLOBALS=1'}
#项目中的macro
s.user_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => 'MAS_SHORTHAND_GLOBALS=1'}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容