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

559
Visualizações
Aplicación ejecutable Swift Package Manager, establecer objetivo de implementación

Estoy usando Swift Package Manager para crear un ejecutable de macOS. Cuando uso cosas que no están disponibles en todas las versiones de macOS, obtengo errores de compilación. Dos grandes ejemplos son URL(fileURLWithPath: filePath, relativeTo: directoryToSearch) y url.hasDirectoryPath .

Cuando construyo con swift build error: 'init(fileURLWithPath:relativeTo:)' is only available on OS X 10.11 or newer . No me importa ninguna versión anterior del sistema operativo, ya que es solo una herramienta personal. ¿Cómo puedo configurar el objetivo de implementación para que sea 10.14 para no tener que esparcir cheques por todo mi código?

Encontré https://hirschmann.io/swift-package-manager/ que habla sobre este problema. Sin embargo, su solución es crear un archivo xcconfig con el conjunto de objetivos de implementación y usar swift package generate-xcodeproj --xcconfig-overrides ./main.xcconfig para aplicarlo al proyecto Xcode generado. Si bien funciona, solo funciona para el proyecto Xcode, por lo que si solo quiero hacer swift build para obtener el ejecutable independiente para usar fuera de Xcode, entonces no puedo.

El archivo de mi paquete fue generado automáticamente por swift package init --type executable y no ha sido modificado.

 // swift-tools-version:4.2 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "swift_converter", dependencies: [ // Dependencies declare other packages that this package depends on. // .package(url: /* package url */, from: "1.0.0"), ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. // Targets can depend on other targets in this package, and on products in packages which this package depends on. .target( name: "swift_converter", dependencies: []), .testTarget( name: "swift_converterTests", dependencies: ["swift_converter"]), ] )
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es posible que esto no lo ayude en este momento, pero el próximo Swift 5.0 incluirá la capacidad de especificar el objetivo de implementación en el manifiesto del paquete , usando una sintaxis como esta:

 ... platforms: [ .macOS(.v10_13), .iOS(.v12), ], ...

(Lo mismo es cierto para algunas otras configuraciones de compilación comunes ).

Hasta entonces, puede anular el destino de implementación predeterminado a través de argumentos de línea de comando como este:

 $ swift build -Xswiftc "-target" -Xswiftc "x86_64-apple-macosx10.14"

Tendrá que incluir estos argumentos en cada llamada a swift build , swift run , swift test .

over 4 years ago · Santiago Trujillo Relatório
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