Que*_*e20 23 iphone xcode ios swift ios8.3
所以我正在研究Swift中的iOS项目,我想创建一个包含一些有用内容的静态库.
我的问题是当我尝试在Xcode(版本6.3)中构建我的lib时,我有一个"Build Failed",然后是: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character 'X' in: -Xlinker
我从来没有见过这个,这不是我的第一个静态库.所以我在想我可能与我只使用Swift类这一事实有关.
你们有什么感想 ?先感谢您.
Dea*_*lly 19
如前所述,从Xcode 9 Beta 4开始,Apple 确实允许Swift使用静态库.
我们尝试在具有基于Objective-C的目标和"子"静态库项目的现有项目上执行此操作,并继续遇到链接错误
ld: library not found for -lswiftSwiftOnoneSupport for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
也
ld: library not found for -lswiftDispatch for architecture x86_64
Run Code Online (Sandbox Code Playgroud)
这是因为主目标(app)正在尝试仅针对Objective-C进行构建,并且静态库没有告知它需要包含Swift库.这是因为Compile Sources
我们Build Phases
的应用程序目标部分没有任何Swift文件.
所以你基本上所要做的就是在.swift
该编译列表中添加至少一个文件,它将包含Swift库.它甚至不需要包含任何代码或值,它可以是一个空文件.
然后,您可以开始将Swift文件添加到"子"静态库项目中.我会让它首先为你生成桥接标题,然后你可以移动它并更改导入的内容(确保项目在构建设置中指向正确的文件,如果你移动它).
您仍应记住,在同一静态库中使用Swift和Objective-C 可能会有自己的问题.我建议阅读Apple开发人员文档"同一项目中的Swift和Objective-C",了解如何解决将Objective-C导入Swift(使用桥接头)以及如何在Objective-C代码中使用Swift文件(导入-Swift.h
为您的图书馆生成).
Ale*_*dro 11
从Xcode 9 beta 4开始,Xcode本身支持使用Swift源的静态库.
Xcode版本10.2.1
创建一个库项目或创建一个库目标
File -> New -> Project... -> Cocoa Touch Static Library
//or
Project editor -> Add a Target -> Cocoa Touch Static Library
Run Code Online (Sandbox Code Playgroud)
新增档案 .swift
Select `.swift` file -> Select File Inspectors Tab -> Target Membership -> Select the target
//or
Project editor -> select a target -> Build Phases -> Compile Sources -> add files
Run Code Online (Sandbox Code Playgroud)
构建库- ? Command+ B或Product -> Build
注1:确保为与客户端代码相同的流程体系结构构建库。
注意2:公开您的API,以供使用public
或open
访问修饰符显示给消费者的[关于]
查找生成的输出[构建位置]
Products group -> lib<product_name>.a -> Show in Finder
Run Code Online (Sandbox Code Playgroud)
该目录包括
lib<product_name>.a
–内置的静态库<product_name>.swiftmodule
该文件夹包括:
.swiftdoc
-文档 .swiftmodule
-公共接口/定义Drag and drop
将二进制文件放入Xcode项目[关于]
Project editor -> select a target -> General -> Linked Frameworks and Libraries -> add -> Add Others... -> point to `lib<target_name>.a` file
//or
Project editor -> select a target -> Build Phases -> Link Binary With Libraries -> add -> Add Others... -> point to `lib<target_name>.a` file
Run Code Online (Sandbox Code Playgroud)
添加Library Search paths
[找不到库] [递归路径]
Project editor -> select a target -> Build Settings -> Search Paths -> Library Search paths -> add path to the parent of `lib<target_name>.a` file
Run Code Online (Sandbox Code Playgroud)
添加Import Paths
[没有这样的模块] [递归路径]
Project editor -> select a target -> Build Settings -> Swift Compiler - Search Paths -> Import Paths -> add path to a folder with `.swiftmodule`
Run Code Online (Sandbox Code Playgroud)
将模块导入到Swift客户端代码[module_name]
import module_name
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27862 次 |
最近记录: |