Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

784
Visualizações
Swift Package Manager: dos objetivos similares diferentes solo con las dependencias

Estoy migrando una biblioteca creada y probada como un proyecto Xcode a Swift Package Manager. El proyecto contiene 3 objetivos: la propia biblioteca, la misma biblioteca pero con diferente dependencia y el objetivo de prueba (aplicación).

Hasta ahora, migrar la biblioteca fue fácil.

Ahora estoy interesado en construir la misma biblioteca con una dependencia diferente (simulacros) que podría probarse.

En la práctica, el archivo Package.swift se ve así:

 // swift-tools-version:5.4 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "TargetLibrary", platforms: [ .iOS(.v14), .macOS(.v10_15) ], products: [ .library( name: "TargetLibrary", targets: ["TargetLibrary"]), ], dependencies: [ .package( url: "ssh://git@github.com/DependentLib", .upToNextMinor(from: "1.3.18") ), ], targets: [ .target( name: "TargetLibrary", dependencies: [ // Using the "main" dependency for the "TargetLibrary" .product(name: "DependentLib", package: "DependentLib"), ], path: "src", exclude: [ ], sources: [ "sourcefiles" ], publicHeadersPath: "SwiftPackage/include", cxxSettings: [ .headerSearchPath("lib"), ]), // This target is virtually identical, to the previous one, // the only difference is that it is using a different dependency library // from the same package .target( name: "TargetLibraryWithMock", dependencies: [ // Using the "mock" dependency for this library .product(name: "DependentLibMock", package: "DependentLib"), ], path: "src", exclude: [ ], sources: [ "sourcefiles" ], publicHeadersPath: "SwiftPackage/include", cxxSettings: [ .headerSearchPath("lib"), ]), // Now testing the "TargetLibraryWithMock" .testTarget().... ], cxxLanguageStandard: .cxx14 )

Ahora, por supuesto, si solo duplico dos objetivos, obtendré un error de fuentes superpuestas de objetivos

Entonces, la pregunta es: ¿Cómo puedo construir dos objetivos diferentes solo por las dependencias que incluyen?

Parece que la condición de dependencia de destino podría haber ayudado aquí

 dependencies: [ .target(name: "DependentLib", condition: .when(configuration: .build)), .target(name: "DependentLibMock", condition: .when(configuration: .test)), ]

pero ahora solo existen condicionales específicos de la plataforma. ¿Cuáles podrían ser las soluciones a este problema?

Representación gráfica del resultado deseado:

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda