0

私は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せずにビルドしようとしましたが、想定どおりに実行することを提案しませんでし た。私はそうして先に進みました。jpegswift build
    brew install jpeg
brew install jpeg

現在、jpegbrew でインストールすると、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

4

3 に答える 3

3

SwiftPM はドキュメントを更新し、システム パッケージに関する説明を改善し、新しい例を追加しました。

https://github.com/apple/swift-package-manager/blob/master/Documentation/Usage.md#require-system-libraries

于 2016-11-17T16:46:51.090 に答える
0

SwiftPM チームはSwift パッケージのドキュメントを拡張し、多くの問題を修正しました (Ankit Agarwal が述べたように)。

于 2016-11-18T21:56:47.883 に答える