Связывание цели Swift Package Manager

#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 он не знал, что делать с исполняемым файлом, и выдал ошибку компоновщика. Почему? Я понятия не имею