• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

xcode project.pbxproj文件的介绍

其他 开心洋葱 1635次浏览 0个评论

 

PBXBuildFile与PBXFileReference

PBXBuildFile与PBXFileReference这两个section保存中工程文件相关的信息:包含文件的类型,路径,名称等

<code class="hljs avrasm has-numbering"><span class="hljs-comment">/* Begin PBXBuildFile section */</span>
    <span class="hljs-number">2</span>B82218D1B75AC8800BDEFB7 <span class="hljs-comment">/* Foundation.framework in Frameworks */</span> = 
                            {isa = PBXBuildFile<span class="hljs-comment">; </span>
                            fileRef = <span class="hljs-number">2</span>B82218C1B75AC8800BDEFB7 
                            <span class="hljs-comment">/* Foundation.framework */</span><span class="hljs-comment">; };</span>
<span class="hljs-comment">/* End PBXBuildFile section */</span>

<span class="hljs-comment">/* Begin PBXFileReference section *
    F60CC2A014D4EA0500A005E4 /* SocketOperation.m */</span> = 
                            {isa = PBXFileReference<span class="hljs-comment">; </span>
                            lastKnownFileType = sourcecode<span class="hljs-preprocessor">.c</span><span class="hljs-preprocessor">.objc</span><span class="hljs-comment">; </span>
                            sourceTree = <group><span class="hljs-comment">; };</span>
<span class="hljs-comment">/* End PBXFileReference section */</span></code>

PBXGroup

这个section保存着工程文件的分组信息:分组的名称,以及该组内含有的文件,比如下面的例子,一个EGOTableViewPullRefresh分组里面还有一个children子分组,同时该组包含EGORefreshTableHeaderView的.h和.m两个文件,该分组对应的相对路径为../Classes/EGOTableViewPullRefresh

<code class="hljs cs has-numbering">        E1B4A9DE12FC8B1000EB3F67 <span class="hljs-comment">/* EGOTableViewPullRefresh */</span> = {
            isa = PBXGroup;
            children = (
                E1B4A9DF12FC8B1000EB3F67 <span class="hljs-comment">/* EGORefreshTableHeaderView.h */</span>,
                E1B4A9E012FC8B1000EB3F67 <span class="hljs-comment">/* EGORefreshTableHeaderView.m */</span>,
            );
            name = EGOTableViewPullRefresh;
            path = ../Classes/EGOTableViewPullRefresh;
            sourceTree = <span class="hljs-string">"<group>"</span>;
        };
<span class="hljs-comment">/* End PBXGroup section */</span></code>

PBXNativeTarget

该section保存工程创建的target信息:包含target的对应的配置信息、创建规则、依赖、名称和类型等信息

<code class="hljs cs has-numbering"><span class="hljs-comment">/* Begin PBXNativeTarget section */</span>
        <span class="hljs-number">1</span>D6058900D05DD3D006BFB54 <span class="hljs-comment">/* MyBaby */</span> = {
            isa = PBXNativeTarget;
            buildConfigurationList = <span class="hljs-number">1</span>D6058960D05DD3E006BFB54 <span class="hljs-comment">/* Build configuration list for PBXNativeTarget "MyBaby" */</span>;
            buildPhases = (
                <span class="hljs-number">1</span>D60588D0D05DD3D006BFB54 <span class="hljs-comment">/* Resources */</span>,
                <span class="hljs-number">832</span>D4F01120A6F7C001708D4 <span class="hljs-comment">/* CopyFiles */</span>,
                <span class="hljs-number">1</span>D60588E0D05DD3D006BFB54 <span class="hljs-comment">/* Sources */</span>,
                <span class="hljs-number">1</span>D60588F0D05DD3D006BFB54 <span class="hljs-comment">/* Frameworks */</span>,
                <span class="hljs-number">79289</span>B3ECCA2441197B8D7F6 <span class="hljs-comment">/* Copy Pods Resources */</span>,
            );
            buildRules = (
            );
            dependencies = (
            );
            name = MyBaby;
            productName = WordPress;
            productReference = <span class="hljs-number">1</span>D6058910D05DD3D006BFB54 <span class="hljs-comment">/* My Baby.app */</span>;
            productType = <span class="hljs-string">"com.apple.product-type.application"</span>;
        };
<span class="hljs-comment">/* End PBXNativeTarget section */</span></code>

XCBuildConfiguration与XCConfigurationList

这两个section保存着工程相关的配置信息:下面对应的是debug模式下的配置信息,可以看到里面包含CODE_SIGN_IDENTITY,sdk,framework的搜索路径等信息。

<code class="hljs objectivec has-numbering"><span class="hljs-comment">/* Begin XCBuildConfiguration section */</span>
        C01FCF5008A954540054247B <span class="hljs-comment">/* Release */</span> = {
            isa = XCBuildConfiguration;
            baseConfigurationReference = EBC24772E5CD4036B5AFD803 <span class="hljs-comment">/* Pods.xcconfig */</span>;
            buildSettings = {
                ARCHS = <span class="hljs-string">"$(ARCHS_STANDARD)"</span>;
                CODE_SIGN_ENTITLEMENTS = <span class="hljs-string">""</span>;
                CODE_SIGN_IDENTITY = <span class="hljs-string">""</span>;
                GCC_C_LANGUAGE_STANDARD = c99;
                GCC_THUMB_SUPPORT = <span class="hljs-literal">NO</span>;
                GCC_WARN_ABOUT_RETURN_TYPE = <span class="hljs-literal">YES</span>;
                GCC_WARN_UNUSED_VARIABLE = <span class="hljs-literal">YES</span>;
                HEADER_SEARCH_PATHS = <span class="hljs-string">""</span>;
                IPHONEOS_DEPLOYMENT_TARGET = <span class="hljs-number">7.0</span>;
                ONLY_ACTIVE_ARCH = <span class="hljs-literal">NO</span>;
                OTHER_CFLAGS = <span class="hljs-string">"-Wno-format-security"</span>;
                OTHER_LDFLAGS = (
                    <span class="hljs-string">"-lxml2"</span>,
                    <span class="hljs-string">"-licucore"</span>,
                );
                PROVISIONING_PROFILE = <span class="hljs-string">""</span>;
                SDKROOT = iphoneos;
                VALIDATE_PRODUCT = <span class="hljs-literal">YES</span>;
                VALID_ARCHS = <span class="hljs-string">"armv7 arm64 armv7s"</span>;
            };
            name = Release;
        };
<span class="hljs-comment">/* End XCBuildConfiguration section */</span>

<span class="hljs-comment">/* Begin XCConfigurationList section */</span>
        C01FCF4E08A954540054247B <span class="hljs-comment">/* Build configuration list for PBXProject "MyBaby" */</span> = {
            isa = XCConfigurationList;
            buildConfigurations = (
                C01FCF4F08A954540054247B <span class="hljs-comment">/* Debug */</span>,
                C01FCF5008A954540054247B <span class="hljs-comment">/* Release */</span>,
                <span class="hljs-number">2</span>F30B4C10E342FDF00211B15 <span class="hljs-comment">/* Distribution */</span>,
                <span class="hljs-number">83</span>D3E0201215F89F00600B4B <span class="hljs-comment">/* Beta */</span>,
            );
            defaultConfigurationIsVisible = <span class="hljs-number">0</span>;
            defaultConfigurationName = Release;
        };
<span class="hljs-comment">/* End XCConfigurationList section */</span></code>

通过上面分析一个pbxproj文件的过程可以看出,要创建一个工程,首先需要添加相关的文件,然后设置需要生成的target以及对应的配置信息就行了。


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明xcode project.pbxproj文件的介绍
喜欢 (0)

您必须 登录 才能发表评论!

加载中……