Carthage

What Carthage is
Carthage is a free, MIT-licensed dependency manager for Cocoa applications. It resolves dependencies, fetches their source, builds them, and supplies framework bundles or XCFrameworks while leaving project structure and setup in the developer’s hands. It does not automatically change project files or build settings. Dependencies are normally fetched into the project folder, with an option for Git submodules. Carthage can also use prebuilt frameworks from GitHub Releases or a binary project definition file. It supports dependency resolution, lockfiles, and private registry authentication. For Xcode 12 and later, the documented --use-xcframeworks option creates platform-independent XCFrameworks. Documentation covers macOS, iOS, tvOS, and watchOS, while supported platforms also include visionOS. Dynamic frameworks are officially supported; static frameworks are supported from version 0.30.0. Swift framework compatibility is checked against the local Swift version, with source builds attempted when versions differ. Installation options include a package installer, Homebrew, MacPorts, or source.
Who it suits
Carthage suits Cocoa developers who want dependency builds and framework outputs without automatic project-file or build-setting changes. It is aimed at Apple-platform projects needing framework or XCFramework support.
What it does well
- Free MIT-licensed software
- Supports lockfiles and private registry authentication
- Builds framework bundles and XCFrameworks
- Checks Swift version compatibility
- Offers package, Homebrew, MacPorts, and source installation
What to know first
- Build caching cannot be combined with Git submodules
- Official dynamic-framework support targets iOS 8 or later
- Requires manual control of project setup
Plans
| Plan | Billed and limits | Price |
|---|---|---|
| Carthage | MIT licensed software | Free |
As github.com lists them, read 11 Oct 2026. The maker's own page has the final word.
Verdict
Carthage provides dependency resolution and framework building while keeping project configuration under developer control. Its Apple-platform coverage, binary framework options, and Swift compatibility checks are useful, but cache and submodule use cannot be combined.
Facts from Carthage's own pages
- Apple platforms
- The documentation covers building frameworks for macOS, iOS, tvOS, and watchOS. · github.com, 11 Oct 2026
- Binary downloads
- Carthage can use prebuilt frameworks attached to GitHub Releases or specified through a binary project definition file. · github.com, 11 Oct 2026
- Build caching
- The --cache-builds option can avoid rebuilding a dependency when possible, but it is incompatible with --use-submodules. · github.com, 11 Oct 2026
- Builds dependencies
- It builds dependencies and provides binary frameworks while leaving project structure and setup under the developer’s control. · github.com, 11 Oct 2026
- Compatibility limit
- Carthage officially supports dynamic frameworks, which are available on iOS 8 or later and any version of OS X. · github.com, 11 Oct 2026
- Dependency resolution
- Yes · github.com, 22 Sept 2026
- Dependency sources
- Carthage checks out dependency source files into the project folder by default and can optionally use Git submodules. · github.com, 11 Oct 2026
- Framework formats
- Carthage can build XCFrameworks and framework bundles, and supports static frameworks as of version 0.30.0. · github.com, 11 Oct 2026
- Framework support
- The README says Carthage officially supports dynamic frameworks and also supports static frameworks starting with version 0.30.0. · github.com, 11 Oct 2026
- Free plan
- Yes · github.com, 22 Sept 2026
- Installation
- The project documents installation through a package installer, Homebrew, MacPorts, or building from source. · github.com, 11 Oct 2026
- Install options
- The README lists a package installer, Homebrew, MacPorts, and installation from source. · github.com, 11 Oct 2026
- License
- Carthage is distributed under the MIT License, which grants permission to use, copy, modify, publish, distribute, sublicense, and sell the software subject to its conditions. · raw.githubusercontent.com, 11 Oct 2026
- Lockfile support
- Yes · github.com, 22 Sept 2026
- Notable limit
- The README says build caching with `--cache-builds` is incompatible with `--use-submodules`. · github.com, 11 Oct 2026
- Package formats
- framework,xcframework · github.com, 22 Sept 2026
- Platforms
- The README gives framework setup instructions for macOS, iOS, tvOS, and watchOS projects. · github.com, 11 Oct 2026
- Prebuilt frameworks
- Carthage can use prebuilt frameworks attached to GitHub Releases or specified through a binary project definition file. · github.com, 11 Oct 2026
- Private registry auth
- Yes · github.com, 22 Sept 2026
- Project changes
- Carthage does not automatically modify project files or build settings. · github.com, 11 Oct 2026
- Project control
- Carthage leaves project structure and setup under the developer’s control and does not automatically modify project files or build settings. · github.com, 11 Oct 2026
- Purpose
- Carthage is a dependency manager for Cocoa applications that builds dependencies and provides binary frameworks. · github.com, 11 Oct 2026
- Release format
- The project’s release page lists version 0.40.0 as its latest release. · github.com, 11 Oct 2026
- Support
- The README invites users who cannot resolve framework build failures to open an issue on GitHub. · github.com, 11 Oct 2026
Where Carthage stands on Freedom251
- Package Managers#49 of 93