#swift #swift-package-manager
#swift #swift-package-manager
Вопрос:
Я хочу иметь возможность импортировать только 1 цель / пакет из пакета Swift. Для этого у меня есть следующая структура:
TopLevelDirectory
|- Package.swift
|- Sources
|- MyTargetName
|- main.swift
|- SubFolder1
|- Swifty1.swift
|- SubFolder2
|- Swifty2.swift
|- Tests
|- MyTargetNameTests
|- SubFolder1Tests
|- Swifty1Tests.swift
|- SubFolder2Tests
|- Swifty2Tests.swift
|- LinuxMain.swift
Теперь, когда я запускаю swift build
и swift run
, это компилируется и работает просто отлично. Однако, когда я запускаю swift test
, я получаю ошибки компоновщика для содержимого в Swifty1.swift
и Swifty2.swift
.
Теперь в моем тестовом файле у меня есть строка @testable import MyTargetName
, чтобы попытаться импортировать цель
Есть идеи о том, что я делаю не так?
Package.swift:
let package = Package(
name: "MyPackageName",
platforms: [
.macOS(.v10_15), .iOS(.v10)
],
products: [
.library(name: "MyPackageName", targets: ["MyTargetName"]),
],
dependencies: [ ],
targets: [
.target(name: "MyTargetName", dependencies: []),
.testTarget(name: "MyTargetNameTests", dependencies: ["MyTargetName"])
]
)
Ответ №1:
В итоге я решил свою собственную проблему. Под MyTargetName
ним у меня был файл main.swift. При сборке и запуске он видел исполняемый файл и не имел проблем. Но при запуске swift test
он не знал, что делать с исполняемым файлом, и выдал ошибку компоновщика. Почему? Я понятия не имею