Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

783
Vistas
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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda