尝试根据第三方框架构建基于 Swift 的命令行工具时构建错误:此目标可能包含其自己的产品
Build error while trying to build a Swift-based command line tool depending on a third-party framework: this target might include its own product
上下文: 我想使用 CryptoSwift 创建一个简单的 Swift 命令行工具
我对 Xcode 和 Swift(以及 MacOS!)比较陌生。
配置:
- MacOS High Sierra 10.13.2
- Xcode:9.2
步骤:
- 我开始Xcode
- 为 MacOS 创建一个新项目“命令行工具”
- 我的项目选项:
- 产品名称:cryptodemo
- 组织标识符:com.demo
- 语言Swift
- 我把项目创建成
~/Documents
填写我的main.swift:
import Foundation
import CryptoSwift
print("Hello, World!")
let bytes:Array<UInt8> = [0x01, 0x02, 0x03]
let digest = Digest.md5(bytes)
打开shell进入~/Documents/cryptodemo
- 将 CryptoSwift 添加为由 project’s README 定义的子模块,使用:
git submodule add https://github.com/krzyzanowskim/CryptoSwift.git
- 打开 Finder 并将
CryptoSwift.xcodeproj
文件拖到我的 Xcode 项目中
在Xcode,我进入我的项目Build Phase
- 我添加了
CryptoSwift
作为目标依赖项
- 我将
CryptoSwift.framework
添加到 Link Binaries with Libraries
- 我将
CryptoSwift.framework
添加到 Copy Files
中:
- 目的地:
Framework
- 子路径:(空)
那我建一个。我有这个错误:
Check dependencies
Unable to run command 'PBXCp CryptoSwift.framework' - this target might include its own product.
Unable to run command 'CodeSign A' - this target might include its own product.
这里是项目的存档cryptodemo.zip
删除第 9 步并将 CryptoSwift.framework 添加到“Linked Frameworks and Libraries”
喜欢这里:
我设法使用第三方 Swift 库构建命令行工具的唯一方法是使用 Swift Package Manager (SPM).
使用 SPM 的 Swift 项目示例(可以使用 swift package init --type executable
生成):
// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: “mytool”,
dependencies: [
.package(url: "https://github.com/myfreeweb/SwiftCBOR.git", .branch("master")),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: “mytool”,
dependencies: [ "SwiftCBOR" ]),
]
)
一个 Xcode 项目可以从这个 SPM 使用:swift package generate-xcodeproj
上下文: 我想使用 CryptoSwift 创建一个简单的 Swift 命令行工具 我对 Xcode 和 Swift(以及 MacOS!)比较陌生。
配置:
- MacOS High Sierra 10.13.2
- Xcode:9.2
步骤:
- 我开始Xcode
- 为 MacOS 创建一个新项目“命令行工具”
- 我的项目选项:
- 产品名称:cryptodemo
- 组织标识符:com.demo
- 语言Swift
- 我把项目创建成
~/Documents
填写我的main.swift:
import Foundation import CryptoSwift print("Hello, World!") let bytes:Array<UInt8> = [0x01, 0x02, 0x03] let digest = Digest.md5(bytes)
打开shell进入
~/Documents/cryptodemo
- 将 CryptoSwift 添加为由 project’s README 定义的子模块,使用:
git submodule add https://github.com/krzyzanowskim/CryptoSwift.git
- 打开 Finder 并将
CryptoSwift.xcodeproj
文件拖到我的 Xcode 项目中 在Xcode,我进入我的项目
Build Phase
- 我添加了
CryptoSwift
作为目标依赖项 - 我将
CryptoSwift.framework
添加到Link Binaries with Libraries
- 我将
CryptoSwift.framework
添加到Copy Files
中:- 目的地:
Framework
- 子路径:(空)
- 目的地:
- 我添加了
那我建一个。我有这个错误:
Check dependencies Unable to run command 'PBXCp CryptoSwift.framework' - this target might include its own product. Unable to run command 'CodeSign A' - this target might include its own product.
这里是项目的存档cryptodemo.zip
删除第 9 步并将 CryptoSwift.framework 添加到“Linked Frameworks and Libraries”
喜欢这里:
我设法使用第三方 Swift 库构建命令行工具的唯一方法是使用 Swift Package Manager (SPM).
使用 SPM 的 Swift 项目示例(可以使用 swift package init --type executable
生成):
// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.
import PackageDescription
let package = Package(
name: “mytool”,
dependencies: [
.package(url: "https://github.com/myfreeweb/SwiftCBOR.git", .branch("master")),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: “mytool”,
dependencies: [ "SwiftCBOR" ]),
]
)
一个 Xcode 项目可以从这个 SPM 使用:swift package generate-xcodeproj