4.1 创建 C 语言目标
1分钟内可阅读完
原文链接: https://docs.swift.org/latest/documentation/packagemanagerdocs/creatingclanguagetargets/
4.1 创建 C 语言目标
在你的 Swift 包中把 C 语言代码包含为一个目标。
概述
C 语言目标的结构与 Swift 目标类似,只是多了一个目录(通常命名为 include)用来存放公共头文件。如果你存放公共头文件的目录不叫 include,请在 target 上用 publicHeadersPath 参数声明它。
Swift Package Manager 对可执行目标只允许一个有效的 C 语言主文件。例如,同一个目标中同时存在 main.c 和 main.cpp 就是无效的。
向 Swift 暴露 C 函数
在下列情形中,Swift Package Manager 会为每个 C 语言库目标自动生成模块映射:
如果
include/Foo/Foo.h存在、Foo是 include 目录下唯一的目录,并且 include 目录中没有任何头文件,那么 Swift Package Manager 会把include/Foo/Foo.h用作伞形头文件(umbrella header)。如果
include/Foo.h存在,并且include中没有其他子目录,那么 Swift Package Manager 会把include/Foo.h用作模块映射的伞形头文件。否则,Swift Package Manager 会把
include目录用作伞形目录(umbrella directory),该目录下的所有头文件都会被包含进模块。
如果 include 的布局比较复杂,或者头文件与模块不兼容,请在 include 目录中提供一个 module.modulemap。