我正在处理swift-package-manager/Documentation/Usage.md中的第一个示例
我的设置:macOS 10.12.1、Brew(jpeg-8d
和jasper-1.900.21
)、Swift 3.0.1
说明没有提到example/Package.swift
需要这一行,否则它不会构建:
name: "example",
错误是:
/Users/yost/p/swift/package-example/work/example/Package.swift:3:22: error: missing argument for parameter 'name' in call
let package = Package(
^
PackageDescription.Package:18:12: note: 'init(name:pkgConfig:providers:targets:dependencies:exclude:)' declared here
public init(name: String, pkgConfig: String? = default, providers: [PackageDescription.SystemPackageProvider]? = default, targets: [PackageDescription.Target] = default, dependencies: [PackageDescription.Package.Dependency] = default, exclude: [String] = default)
^
Can't parse Package.swift manifest file because it contains invalid format. Fix Package.swift file format and try again.
error: invalid manifest format
它不在说明中,但根据本文档的参考部分,我添加了该行
providers: [ .Brew("jpeg") ]
并CJPEG/Package.swift
尝试在未jpeg
安装的情况下构建,并且swift build
不建议
brew install jpeg
按预期运行。我做到了brew install jpeg
并继续前进。
现在用jpeg
brew 安装,swift build
得到这些错误:
Compile Swift Module 'example' (1 sources)
<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "/usr/local/include/jpeglib.h"
^
/usr/local/include/jpeglib.h:755:3: error: unknown type name 'size_t'
size_t free_in_buffer; /* # of byte spaces remaining in buffer */
^
... blah blah ...
<unknown>:0: error: build had 1 command failures
error: exit(1): /Library/Developer/Toolchains/swift-3.0-RELEASE.xctoolchain/usr/bin/swift-build-tool -f /Users/yost/p/swift/package-example/example/.build/debug.yaml
我发现我必须编辑/usr/local/include/jpeglib.h
才能
#include <stdio.h>
在顶部添加。
顺便说一句,CJPEG/module.modulemap
文件说:
header "/usr/include/jpeglib.h"
文件jpeglib.h
在/usr/local/include
而不是/usr/include
. 为什么这不会导致构建错误?
无论如何,此时swift build
得到了这些构建错误:
Compile Swift Module 'example' (1 sources)
Linking ./.build/debug/example
ld: library not found for -ljpeg for architecture x86_64
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: build had 1 command failures
error: exit(1): /Library/Developer/Toolchains/swift-3.0-RELEASE.xctoolchain/usr/bin/swift-build-tool -f /Users/yost/p/swift/package-example/example/.build/debug.yaml
我发现我不能只用:
swift build
我必须用
swift build -Xlinker -L/usr/local/include
这些调整让我通过了这个jpeglib
例子。
在构建JasPer
示例时,我收到以下错误:
Compile Swift Module 'example' (1 sources)
<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "/usr/local/include/jasper/jasper.h"
^
/usr/local/include/jasper/jasper.h:65:10: error: 'jasper/jas_config.h' file not found
#include <jasper/jas_config.h>
^
/Users/yost/p/swift/package-example/example/Sources/main.swift:3:8: error: could not build Objective-C module 'CJasPer'
import CJasPer
^
<unknown>:0: error: build had 1 command failures
error: exit(1): /Library/Developer/Toolchains/swift-3.0-RELEASE.xctoolchain/usr/bin/swift-build-tool -f /Users/yost/p/swift/package-example/example/.build/debug.yaml
感谢 Vadim 的回答,我现在知道我必须使用
swift build -Xcc -I/usr/local/include -Xlinker -L/usr/local/lib
但我还没有看到我可以添加什么Package.swift
以便我可以简单地构建
swift build