为什么要导入.m文件?

时间:2016-06-01 06:10:36

标签: ios objective-c

我有一个源文件,实际上它是一个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_SourcesGTLJSONParser上的重复符号结果。我尝试将源文件更改为#import "Utilities/GTLJSONParser.h"而不是#import "Utilities/GTLJSONParser.m",并且重复的符号错误消失了。

有人可以建议为什么这个库导入.m文件?在AFAIK期间,我们始终导入.h文件。

1 个答案:

答案 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等)添加到您的项目中。