Skip to content

Repository files navigation

BuildShared

A shared Swift Package for building libraries across multiple Apple platforms (iOS, macOS, tvOS, visionOS).

Usage

  1. Add BuildShared as a dependency in your Package.swift.
dependencies:[.package(url:"https://github.com/mpvkit/BuildShared.git", from:"1.0.0")],targets:[.target(
name:"MyLibraryBuild",
dependencies:["BuildShared"]),]
  1. Create a main.swift (or your build script entry point) and define your library by conforming to BuildLibrary.
import BuildShared
// 1. Define your library
enumMyLibrary:String,BuildLibrary{case myLib
varversion:String{switchself{case.myLib:return"v1.2.3"}}varurl:String{switchself{case.myLib:return"https://github.com/example/mylib.git"}}vartargets:[PackageTarget]{return[switchself{case.myLib:return[.target(
name:"MyLib",
url:"https://github.com/example/mylib/releases/download/\(BuildShared.options!.releaseVersion)/myLib.xcframework.zip",
checksum:"https://github.com/example/mylib/releases/download/\(BuildShared.options!.releaseVersion)/myLib.xcframework.checksum.txt"),]}]}}
// 2. Define your build class inheriting from BaseBuild (Non-generic)
classMyBuild:BaseBuild{overridefunc flagsDependencelibrarys()->[anyBuildLibrary]{
// Return dependencies if any
return[]}
// Override other methods to customize build process (configure, arguments, etc.)
}
// 3. Execute the build
do{letoptions=tryBuildRunner.performCommand()letbuild=MyBuild(library:MyLibrary.myLib, options: options)try build.buildALL()}catch{print("Build failed: \(error)")exit(1)}

Command Line Arguments

  • enable-debug: Enable debug mode.
  • enable-gpl: Enable GPL features.
  • enable-split-platform: Generate split platform XCFrameworks.
  • version=<version>: Set release version (e.g., 1.2.3).
  • platform=<platform>: Specify target platforms (comma-separated).
    • Values: ios, macos, tvos, xros (visionOS).

Example:

swift run MyLibraryBuild platform=ios,macos version=1.2.3 enable-debug

About

A shared build library for MPVKit

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages