A command-line tool to create XCFrameworks for multiple Apple platforms (iOS, macOS, tvOS, watchOS) in one shot.
Surmagic is a command-line tool that automates the creation of XCFrameworks for Apple platforms. It solves the problem of manually building and bundling frameworks for multiple platforms (iOS, macOS, tvOS, watchOS) and architectures, including simulators, by providing a simple configuration-driven workflow.
iOS and macOS developers who distribute binary frameworks or libraries, especially those needing to support multiple Apple platforms and integrate with CI/CD pipelines.
Developers choose Surmagic because it eliminates the need for complex shell scripts and manual Xcode commands, offering a faster, more reliable way to create XCFrameworks with minimal configuration.
🚀 Command Line Tool to create XCFramework for multiple platforms in one shot!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The 'surmagic xcf' command generates XCFrameworks for all major Apple platforms and simulators in one shot, eliminating the need for complex manual scripts as emphasized in the README.
Surmagic is explicitly designed to work with continuous integration and deployment pipelines, making it easy to automate framework builds in workflows, as highlighted in the key features.
Using a Plist-based Surfile, developers can define targets, SDKs, and output paths in a centralized way, reducing configuration errors and simplifying setup.
The 'surmagic init' command automatically creates the necessary directory structure and Surfile, speeding up onboarding and reducing manual file creation.
Surmagic requires macOS 11.2+, Xcode 12+, and Swift 5.1+, limiting its use to Apple-only development environments and excluding cross-platform setups.
Configuration via XML Plist files can be verbose and less intuitive than modern formats like YAML or JSON, potentially increasing setup time and error-proneness.
The README focuses on basic targets and SDKs without detailed guidance on custom build flags or complex project structures, which might require manual intervention or scripting.