2017-10-11 105 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