美文网首页
使用Swift Package Manager管理项目(the

使用Swift Package Manager管理项目(the

作者: 飘金 | 来源:发表于2017-04-26 20:10 被阅读0次

    首先指定一个文件夹创建一个空的项目

    swift package init --type executable

    这时创建出来的空项目的目录结构为

    Package.swift

    Source:

    main.swift

    Test:

    如果,我们随意变动这个目录结构,都会造成之后build出问题,导致无法使用SPM管理。对于SPM的使用是有很严格的规范的。

    比如下列这样都是错误的

    Package.swift

    Source:

    main.swift

    ModuleA:

    ClassA.swift

    Test:

    
    

    Package.swift

    Source:

    main.swift

    ClassA.swift

    Test:Package.swift

    ModuleA:

    ClassA.swift

    Source:

    main.swift

    Test:

    在build时会出现

    error: the package has an unsupported layout, unexpected source file(s) found:....

    fix: move the file(s) inside a module

    正确的目录结构应该是这样的

    Package.swift

    Source:

    ModuleA:

    main.swift

    ModuleC:

    C.swift

    Test:在source文件夹中,需要把项目代码以模块的方式划分,这样就能正常使用SPM了,然后在build一下

    swift build然后终端上就会显示

    Compile Swift Module 'ModuleC' (2 sources)

    Compile Swift Module 'ModuleA' (1 sources)

    Linking ./.build/debug/ModuleA

    说明ModuleA和ModuleC都已经构建好了,然后输入

    swift package generate-xcodeproj


    就可以使用Xcode编写代码了。当你打开Xcode的时候,你会发现,在左侧目录下方生成了ModuleC.framework,接着需要General中添加这个库,然后可以在ModuleA中使用。在使用过程中,可能会出现 initializer is inaccessible due to ‘internal’ protection level的错误,这是因为ModuleC中的文件没有init方法,只要写一个init方法,就不会报这个错误,可以正常编写代码了

    参考:

    https://swift.org/package-manager/#example-usage

    相关文章

      网友评论

          本文标题:使用Swift Package Manager管理项目(the

          本文链接:https://www.haomeiwen.com/subject/ufswzttx.html