我有一个源文件,实际上它是一个Google API库。
GTLCommon_Sources.m
上有此代码:
#if defined(__has_feature) && __has_feature(objc_arc)
#error "This file needs to be compiled with ARC disabled."
#endif
#import "Objects/GTLBatchQuery.m"
#import "Objects/GTLBatchResult.m"
#import "Objects/GTLDateTime.m"
#import "Objects/GTLErrorObject.m"
#import "Objects/GTLObject.m"
#import "Objects/GTLQuery.m"
#import "Objects/GTLRuntimeCommon.m"
#import "Objects/GTLService.m"
#import "Objects/GTLUploadParameters.m"
#import "Utilities/GTLBase64.m"
#import "Utilities/GTLFramework.m"
#import "Utilities/GTLJSONParser.m"
#import "Utilities/GTLUtilities.m"
但是,尝试构建它,GTLCommon_Sources
和GTLJSONParser
上的重复符号结果。我尝试将源文件更改为#import "Utilities/GTLJSONParser.h"
而不是#import "Utilities/GTLJSONParser.m"
,并且重复的符号错误消失了。
有人可以建议为什么这个库导入.m文件?在AFAIK期间,我们始终导入.h文件。
答案 0 :(得分:3)
这是一种构建所有源文件的便捷方式,而不会将所有源文件都包含在项目中。请参阅the documentation。
您可以编译GTL库,而不是链接到GTL框架 直接进入您自己的项目。为此,请找到库 GTLCommon_Sources.m和GTLCommon_Networking.m文件,然后拖动 将文件放入项目的窗口。
然后将库的源文件夹添加到Header Search Paths条目 项目的构建设置:源,源/对象, 源/实用程序,Deps / gtm-session-fetcher / Source, Deps / gtm-oauth2 / Source,Deps / gtm-oauth2 / Source / Touch(或 DEPS / GTM-的oauth2 /源/苹果机)。
为了实现这一目标,请不将其他任何来源(GTLBatchQuery.m
等)添加到您的项目中。