他们是不同的。但在构建过程结束时,它们都需要链接到应用程序/库的其他.o文件.dylib才能运行。
\n\nSwift 代码分发的基本单位是模块。模块包含作为接口的声明,供客户端编写代码。
\n
\n\n模块是代码分发的单个单元:\xe2\x80\x99s 作为单个单元构建和发布的框架或应用程序,并且可以由另一个模块使用 Swift\xe2\x80\x99s import 关键字导入。
\n
.target()由\'s配置Package.swift
不能有子模块,因此用户不能import Module.Submodule在 Swift 中使用。用户仍然可以导入特定实体,import struct PackageModel.Manifest但这比导入子模块要详细得多。
它的接口以.swiftmodule. 什么是 . swiftmodule?。文档说:
\n\n从概念上讲,包含模块接口的文件与特定库的 C 头文件集合的用途大致相同。
\n
\n\n编译器会
\n.swiftmodule多次生成此文件,就像生成的 Objective-C 标头一样,但它不是文本,而是二进制表示。它包含可内联函数的主体,很像 Objective-C 中的静态内联函数或 C++ 中的标头实现。然而,Swift 模块确实包含私有声明的名称和类型。这允许您在调试器中引用它们,但这确实意味着您不应该在最深的秘密之后命名私有变量。来自 WWDC 2018:Xcode 构建过程的幕后故事
.swiftmodule。当将纯 Objective-C 框架导入 Swift 时,Swift 编译器使用其内置的 clang 编译器来导入 Objective-C 标头。
\n\n\n导入器在 Clangs 中
\n.modulemap为该框架公开的标头中查找声明。(再次来自 WWDC2018)
YourModuleName.modulemap(以前是module.map,但已弃用),格式如下std模块有std.io和std.complex。.m)根本不会暴露。#include或#import样式导入的改进,以改进构建过程(这是一个大主题,请阅读Clang 模块文档)。| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |