2017-10-11 89 views
1

我有一个错误,当我试图在Linux上建立一个快捷包:生成错误:missingLinuxMain

> swift build -v 
lsb_release -r 
which clang 
/opt/swift/usr/bin/swiftc --driver-mode=swift -L /opt/swift/usr/lib/swift/pm/4 -lPackageDescription -swift-version 4 -I /opt/swift/usr/lib/swift/pm/4 -sdk//home/me/SwiftProject/Package.swift -fileno 5 
/opt/swift/usr/bin/swiftc --driver-mode=swift -L /opt/swift/usr/lib/swift/pm/3 -lPackageDescription -swift-version 3 -I /opt/swift/usr/lib/swift/pm/3 -sdk//home/me/SwiftProject/.build/checkouts/siesta-3156441904511450749/Package.swift -fileno 5 
/opt/swift/usr/bin/swiftc --driver-mode=swift -L /opt/swift/usr/lib/swift/pm/3 -lPackageDescription -swift-version 3 -I /opt/swift/usr/lib/swift/pm/3 -sdk//home/me/SwiftProject/.build/checkouts/SwiftyJSON-6376406316629445150/Package.swift -fileno 5 
error: missingLinuxMain 

我没有错误,当我运行的最后一个命令:

/opt/swift/usr/bin/swiftc --driver-mode=swift -L /opt/swift/usr/lib/swift/pm/3 -lPackageDescription -swift-version 3 -I /opt/swift/usr/lib/swift/pm/3 -sdk//home/me/SwiftProject/.build/checkouts/SwiftyJSON-6376406316629445150/Package.swift -fileno 5 

我有一个在测试目录中的文件LinuxMain.swift:

Tests 
├── ProjectTests 
│   ├── SomeTests.swift 
└── LinuxMain.swift 

LinuxMain.swift:

import XCTest 
@testable import ProjectTests 

XCTMain([ 
    testCase(SomeTests.allTests), 
]) 

我使用SWIFT 4.0在Ubuntu 17.04

+0

你在建什么包?是你自己创建的还是你从GitHub克隆的东西? –

+0

一个我自己创建的 – Hugal31

回答

3

SwiftPM使用名为LinuxMain.swift文件(位于你的测试目标的根目录,通常Tests/LinuxMain.swift)找到Linux上的单元测试。 (在Apple平台上,它使用Objective-C运行库,但在Linux上不可用)。

看起来您的构建失败,因为SwiftPM找不到该文件。

如果你还没有LinuxMain.swift文件,你应该创建一个。查看它应该如何格式化的最简单方法可能是在空目录中运行swift package init,并检查预期的目录和文件结构。

该文件应该是这个样子,但适合你的包(我复制这个从here):

import XCTest 
@testable import MarathonTests 

XCTMain([ 
    testCase(MarathonTests.allTests) 
]) 

您的每一个XCTestCase子类还需要一个allTests财产。同样,默认的目录结构应该让你知道它应该是什么样子。

您可能还会发现this article I wrote a few months ago有趣。

+0

我有这个文件 – Hugal31