Я использую Swift Package Manager для создания исполняемого файла macOS.Когда я использую вещи, которые недоступны во всех версиях macOS, я получаю ошибки компиляции.Два больших примера: URL(fileURLWithPath: filePath, relativeTo: directoryToSearch)
и url.hasDirectoryPath
.
При сборке с swift build
я получаю error: 'init(fileURLWithPath:relativeTo:)' is only available on OS X 10.11 or newer
ошибок.Меня не волнуют старые версии ОС, так как это всего лишь личный инструмент.Как я могу установить целевое значение развертывания 10,14, чтобы мне не нужно было разбрасывать проверки по всему моему коду?
Я нашел https://hirschmann.io/swift-package-manager/, в котором говорится об этой проблеме.Однако это решение - создать файл xcconfig
с установленной целью развертывания и использовать swift package generate-xcodeproj --xcconfig-overrides ./main.xcconfig
, чтобы применить его к сгенерированному проекту XCode.Хотя он работает, он работает только для проекта XCode, поэтому, если я просто хочу сделать swift build
, чтобы получить автономный исполняемый файл для использования вне XCode, я не могу.
Мой файл пакета былавтоматически генерируется swift package init --type executable
и не был изменен.
// 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"]),
]
)