Boost is a large, peer-reviewed collection of portable C++ libraries that both fills gaps in the standard library and serves as a proving ground for features—many of which (like smart pointers, regex, and filesystem) later get adopted into the C++ standard itself
Starting with Boost 1.61.0, releases are packaged as static XCFrameworks using libc++. Current release builds contain:
arm64: iOS devicesarm64: iOS Simulator on Apple Siliconx86_64: iOS Simulator on Intel Macs
Badges below show the current master workflow status. Each row keeps its
version-specific badge label while sharing the same workflow status and link.
The tagged workflow builds the XCFramework, installs the consolidated example
on an iOS Simulator, runs its smoke suite, and requires ALL TESTS PASSED
before publishing release assets. The captured report is included in the
GitHub Actions job summary.
The same build and Simulator smoke suite runs on every push to master using
the newest supported Boost version. Master runs upload workflow artifacts but
do not create or modify GitHub Releases.
| Boost | C++ | GitHub Actions | Release |
|---|---|---|---|
| 1.79.0 | C++17 | Boost 1.79.0 | |
| 1.78.0 | C++17 | Boost 1.78.0 | |
| 1.77.0 | C++17 | Boost 1.77.0 | |
| 1.76.0 | C++17 | Boost 1.76.0 | |
| 1.75.0 | C++17 | Boost 1.75.0 | |
| 1.74.0 | C++17 | Boost 1.74.0 | |
| 1.73.0 | C++17 | Boost 1.73.0 | |
| 1.72.0 | C++17 | Boost 1.72.0 | |
| 1.71.0 | C++17 | Boost 1.71.0 | |
| 1.70.0 | C++17 | Boost 1.70.0 | |
| 1.69.0 | C++17 | Boost 1.69.0 | |
| 1.68.0 | C++17 | Boost 1.68.0 | |
| 1.67.0 | C++14 | Boost 1.67.0 | |
| 1.66.0 | C++14 | Boost 1.66.0 | |
| 1.65.0 | C++14 | Boost 1.65.0 | |
| 1.64.0 | C++11 | Boost 1.64.0 | |
| 1.63.0 | C++11 | Boost 1.63.0 | |
| 1.62.0 | C++11 | Boost 1.62.0 | |
| 1.61.0 | C++11 | Boost 1.61.0 |
Boost 1.65.0 adds compiled Boost.Context. Its arm64 AAPCS Mach-O device
implementation and Simulator implementations were runtime-tested with real
jump_fcontext transfers and direct ontop_fcontext execution. The header-only
Boost.Coroutine2 API was tested on top of the same binary by yielding and
resuming values. The full packaged-library smoke suite passed on an arm64 iOS
Simulator and a physical arm64 iOS device.
Boost.Fiber and the deprecated compiled Boost.Coroutine library are not part of the 1.65.0 binary. They are separate compiled dependents of Boost.Context and require their own runtime coverage before inclusion.
Boost 1.66.0 carries forward the same compiled Context configuration and adds the new header-only Boost.Beast, Boost.CallableTraits, and Boost.Mp11 headers. The consolidated app smoke-tests those libraries without network access. The full consolidated suite passed on an arm64 Simulator and a physical arm64 iOS device.
Boost 1.67.0 remains on C++14, carries forward the validated compiled Context configuration, and adds smoke coverage for the new Boost.Contract and Boost.HOF libraries. Contract uses its header-only mode; its optional compiled library remains excluded pending dedicated runtime evaluation. C++17 begins at 1.68.0.
Boost 1.68.0 moves to C++17, retains the validated Context and Coroutine2 configuration, and adds smoke coverage for the new header-only Boost.YAP expression-template library. Fiber and deprecated compiled Coroutine remain excluded pending dedicated device and Simulator runtime evaluation. The full suite passed on an arm64 Simulator and physical arm64 iOS device.
Boost 1.69.0 remains on C++17 and carries forward Context and Coroutine2.
Boost.SafeNumerics is new and its headers are included, but its 1.69
safe_compare implementation is rejected by current Apple Clang, so runtime
coverage is deferred to a later fixed release. Legacy compiled Boost.Signals
was removed upstream, so the smoke suite moves to header-only Boost.Signals2.
Boost 1.70.0 remains on C++17, retains the nine compiled libraries plus Context, and adds smoke coverage for the new header-only Boost.Histogram and Boost.Outcome libraries. The complete suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.71.0 remains on C++17, carries forward the validated compiled-library configuration, and adds smoke coverage for the new header-only Boost.Variant2 library. The complete suite passed on a physical arm64 iOS device; Simulator runtime confirmation remains pending.
Boost 1.72.0 remains on C++17 and introduces no new library. It updates the
existing collection; the smoke suite adds coverage for Boost.Filesystem's newly
compiled filesystem_error implementation. The complete suite passed on an
arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.73.0 remains on C++17 and adds Boost.StaticString plus Boost.Nowide.
StaticString operations, portable Nowide UTF conversion, and Variant2's new
hash support are smoke-tested. The compiled Nowide library is included and its
fopen adapter is exercised on both Simulator and physical device. The complete
consolidated suite passed on an arm64 iOS Simulator and physical arm64 device.
Boost 1.74.0 remains on C++17 and adds the header-only Boost.STLInterfaces.
The smoke suite covers its CRTP random-access iterator, Nowide generic UTF
conversion, Variant2 visit<R> with a derived variant, Filesystem copy options,
and Asio's offline executor model. Simulator and device runtime confirmation is
complete; the consolidated suite passed on an arm64 iOS Simulator and physical
arm64 iOS device.
Boost 1.75.0 remains on C++17 and adds compiled Boost.JSON and Boost.Serialization plus header-only Boost.LEAF and Boost.PFR coverage. The complete suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.76.0 remains on C++17 and introduces no new library. The smoke suite adds portable Boost.Core bit/cmath coverage, offline Asio IP hashing, and Boost.Bind interoperability with standard placeholders. Regex becomes header-only for this C++17 build while its runtime matching test remains. The complete suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.77.0 remains on C++17 and adds the new header-only Boost.Describe and Boost.Lambda2 libraries. The smoke suite also covers JSON fixed-array conversion and hashing plus the opt-in Boost.Filesystem v4 path semantics. The complete suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.78.0 remains on C++17 and introduces no new library. The smoke suite adds coverage for Boost.Core span/type-name helpers, Boost.System result, Variant2 visit-by-index, and updated Filesystem v4 trailing-separator semantics. Three-slice compile/link and SwiftPM packaging checks pass. Simulator and physical arm64 iOS device runtime suites both passed.
Boost 1.79.0 remains on C++17 and introduces no new library. The smoke suite adds JSON Pointer, Unordered contains/erase-if, ThrowException throw-with-location, and IO null-stream coverage. Three-slice compile/link and SwiftPM packaging checks pass; the complete runtime suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Install the pinned release expected by this checkout:
./scripts/install-boost.shTo explicitly follow the newest published release instead:
./scripts/install-boost.sh latestThe pinned form is recommended for reproducible openFrameworks projects. The
installer verifies the published checksum and places the ignored dependency at
libs/boost/ios/boost.xcframework. openFrameworks has no universal addon dependency
package manager; an addon setup script combined with addon_config.mk is the
usual repository-level approach.
Add the versioned pod to your application's Podfile:
platform :ios, '12.0'
target 'YourApp' do
pod 'ofxiOSBoost', '1.79.0'
endInstall it and open the generated workspace:
pod install
open YourApp.xcworkspaceFrom an existing Swift package directory, add the exact release and attach its
ofxiOSBoost product to your target:
swift package add-dependency \
https://github.com/danoli3/ofxiOSBoost.git --exact 1.79.0
swift package add-target-dependency \
ofxiOSBoost YourTarget --package ofxiosboostIn Xcode, use File → Add Package Dependencies, enter the repository URL,
select version 1.79.0, and add the ofxiOSBoost product to the application
target.
Each GitHub Release provides two package archives:
ofxiOSBoost-VERSION.tar.gzis the complete ready-to-drop openFrameworks addon, with its XCFramework installed atlibs/boost/ios/boost.xcframeworkand matching build metadata included.ofxiOSBoost.podspecis generated from the same binary archive, validated by the release workflow, and published to CocoaPods Trunk when the repository has aCOCOAPODS_TRUNK_TOKENsecret configured.ofxiOSBoost-VERSION-xcframework.zipplaces the XCFramework at the archive root for use as a Swift Package Manager binary target. Its checksum is published beside it.
The root-level podspec was removed because it described only the historical Boost 1.60.0 directory layout. CocoaPods 1.9 or newer can consume the generated release podspec through its vendored-XCFramework support. GitHub Releases remain the authoritative binary source; the podspec pins the release archive SHA-256.
example-swift-package contains both a minimal C++ executable package and a
Swift UIKit Xcode app. A small C-compatible C++ bridge lets the Swift app run
the Boost.Filesystem, Boost.Regex, and version-appropriate header-only tests.
The build script stages the release XCFramework as a local binary target and
builds both examples for arm64 and x86_64 iOS Simulator.
The repository root is also an Apple Swift package. After the matching semantic release tag is published, add the following package URL in Xcode:
https://github.com/danoli3/ofxiOSBoost.git
Swift applications should depend on the ofxiOSBoost product, which uses a
C-compatible bridge and does not require Swift C++ interoperability. C++ Swift
package targets may depend on the lower-level boost product directly.
Build and verify the example from a local release archive with:
BOOST_VERSION=1.79.0 ./example-swift-package/build.sh \
dist/ofxiOSBoost-1.79.0.tar.gzTo use the app interactively, copy boost.xcframework from the release archive
to example-swift-package/Package/, then open
example-swift-package/BoostSwiftExample.xcodeproj. The Xcode target consumes
the local Swift package product ofxiOSBoostBridge; Swift does not import the
C++ Boost headers directly.
Release packages include metadata for additional build systems:
boost.pklbeside each XCFramework library follows the openFrameworks Apothecary metadata convention and records the exact slice checksum plus the included and excluded compiled-library lists.boost-components.txtbeside each slice binary provides a plain-text inventory, while the package-levelCOMPONENTS.mdexplains every included and omitted compiled component. All Boost headers remain present, including those belonging to header-only libraries.cmake/ofxiOSBoostprovides the imported targetofxiOSBoost::boostand selects the device or Simulator slice fromCMAKE_OSX_SYSROOT.pkgconfig/ofxiOSBoost-ios.pcandpkgconfig/ofxiOSBoost-ios-simulator.pcexpose device and Simulator metadata separately because pkg-config cannot select XCFramework slices dynamically.
The release build selects a C++ language standard appropriate for each Boost generation. This policy applies to both device and Simulator libraries:
| Boost versions | Build standard | Rationale |
|---|---|---|
| 1.61.0–1.64.x | C++11 | Conservative baseline for these older releases |
| 1.65.0–1.67.x | C++14 | Conservative compatibility through Boost 1.67 |
| 1.68.0–1.79.x | C++17 | Boost libraries increasingly added and tested C++17 support |
| 1.80.0 and newer | C++20 | Later releases include broader C++20 compatibility fixes |
- Boost C++ libraries precompiled for iOS and Xcode
- Precompiled releases and a command to build them yourself
- Designed for use as an openFrameworks addon, while also supporting other iOS projects
- Built with clang++ and libc++, using the versioned C++ standard policy above
- License: See Boost License LICENSE.MD
============
Run ./scripts/install-boost.sh before generating or opening the project. New
projects should link libs/boost/ios/boost.xcframework; Xcode then selects the
correct device or Simulator library automatically.
In Xcode Build Settings for your project:
- Link
libs/boost/ios/boost.xcframeworkin Frameworks, Libraries, and Embedded Content (or Link Binary With Libraries in older Xcode). - If a header search path is required by a legacy target, use the matching
slice headers at
libs/boost/ios/boost.xcframework/ios-arm64/Headers(device) orlibs/boost/ios/boost.xcframework/ios-arm64_x86_64-simulator/Headers(Simulator).
In Xcode for a Build Target select the Target under Build Phases
The old libs/boost/include and libs/boost/lib/ios paths belonged to the
pre-XCFramework Boost 1.60 layout and are no longer generated.
New Boost builds are distributed as GitHub Release assets instead of being added to the repository. The first automated release is Boost 1.61.0. Its archive contains the Boost headers and a libc++ static XCFramework for arm64 iOS devices and arm64/x86_64 iOS Simulator.
Maintainers can create or refresh the current release by running the Build and
release Boost for iOS workflow with version 1.79.0. Pushing the tag
1.79.0 runs the same workflow. The workflow publishes both the archive
and its SHA-256 checksum to the matching GitHub Release.
To build the same package locally with a current Xcode installation:
BOOST_VERSION=1.79.0 ./scripts/build-boost-ios.shThe generated files are placed in dist/, which is intentionally ignored by
Git.
example-xcframework verifies a release independently of openFrameworks. It
checks the XCFramework metadata and device/Simulator slices, then compiles and
links the packaged libraries for arm64 iOS devices and arm64/x86_64 iOS
Simulator. The Xcode application runs the consolidated Boost smoke suite,
including version-appropriate Context, Coroutine2, Asio, and header-only tests.
The default command downloads and tests the current supported release:
./example-xcframework/build.shTo test a locally built archive instead, pass its path explicitly:
./example-xcframework/build.sh dist/ofxiOSBoost-1.79.0.tar.gzFor interactive Simulator or physical-device runtime testing, install or copy
that release to libs/boost/ios/boost.xcframework, then open
example-xcframework/ofxiOSBoostContextExample.xcodeproj in Xcode and run the
application.
============
- You don't need to. This has the pre-compiled versions of BOOST for you to use
- If you would prefer to build it yourself checkout the script included in the
scriptsdirectory.
Boost 1.79.0 upstream release history
Boost 1.79.0 remains on C++17 and adds no new library. Coverage expands to JSON Pointer, Unordered contains/erase-if, ThrowException throw-with-location, and the IO null stream. Three-slice compile/link and SwiftPM packaging checks pass; the complete runtime suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.78.0 upstream release history
Boost 1.78.0 remains on C++17 and adds no new library. Coverage expands to Boost.Core span/type-name helpers, Boost.System result, Variant2 visit-by-index, and updated Filesystem v4 trailing-separator semantics. Three-slice compile/link and SwiftPM packaging checks pass; the complete runtime suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.77.0 upstream release history
Boost 1.77.0 remains on C++17 and adds Boost.Describe and Boost.Lambda2 coverage, JSON fixed-array conversion and hashing, and opt-in Filesystem v4 path semantics. The complete suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.76.0 upstream release history
Boost 1.76.0 remains on C++17. It adds Boost.Core bit/cmath, Asio IP hashing, and Bind standard-placeholder coverage. Regex is header-only in this C++17 configuration. The complete suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.75.0 upstream release history
Boost 1.75.0 adds compiled Boost.JSON and Boost.Serialization plus header-only Boost.LEAF and Boost.PFR coverage. The complete runtime suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.74.0 upstream release history
Boost 1.74.0 remains on C++17. It adds Boost.STLInterfaces and carries forward compiled Context and Nowide plus header-only Coroutine2. Device and Simulator runtime tests passed on arm64.
Boost 1.73.0 upstream release history
Boost 1.73.0 remains on C++17. It adds Boost.StaticString and Boost.Nowide, retains compiled Context and header-only Coroutine2, and includes the complete Boost header tree. Its complete runtime suite passed on an arm64 iOS Simulator and physical arm64 iOS device.
Boost 1.72.0 upstream release history
Boost 1.72.0 remains on C++17 and introduces no new library. It updates the existing collection, retains compiled Context and header-only Coroutine2, and includes the complete Boost header tree.
Boost 1.71.0 upstream release history
Boost 1.71.0 remains on C++17. It adds the header-only Boost.Variant2 library, retains compiled Context and header-only Coroutine2, and includes the complete Boost header tree.
Boost 1.70.0 upstream release history
Boost 1.70.0 remains on C++17. It adds the header-only Boost.Histogram and Boost.Outcome libraries, retains compiled Context and header-only Coroutine2, and includes the complete Boost header tree.
Boost 1.69.0 remains on C++17. It includes the new Boost.SafeNumerics headers but defers runtime coverage due to current Apple Clang incompatibility, and carries forward compiled Context, Coroutine2, and the complete header tree.
Boost 1.68.0 moves to C++17. It adds the header-only Boost.YAP expression template library, carries forward compiled Context and header-only Coroutine2, and includes their 1.68 maintenance fixes.
Boost 1.67.0 remains on C++14. It adds Boost.Contract and Boost.HOF, retains the compiled Context and header-only Coroutine2 coverage, and includes the complete updated Boost header tree. The package moves to C++17 with Boost 1.68.0.
============
Errors such as these mean the application target is not linking the required iOS system frameworks:
Undefined symbol: _CGRectZero
Undefined symbol: _OBJC_CLASS_$_UIColor
Undefined symbol: _OBJC_CLASS_$_UIFont
Undefined symbol: _OBJC_CLASS_$_UIResponder
Undefined symbol: _OBJC_CLASS_$_UIScreen
Undefined symbol: _OBJC_CLASS_$_UITextView
Undefined symbol: _OBJC_CLASS_$_UIViewController
Undefined symbol: _OBJC_CLASS_$_UIWindow
Undefined symbol: _OBJC_METACLASS_$_UIResponder
Undefined symbol: _UIApplicationMain
Undefined symbol: _UIFontWeightRegular
In the iOS application target, open Build Phases → Link Binary With Libraries and add:
UIKit.frameworkCoreGraphics.framework
Make sure these are the iOS SDK frameworks, not macOS frameworks.
Boost.Locale may produce these errors when the system iconv library is absent:
Undefined symbol: _iconv
Undefined symbol: _iconv_close
Undefined symbol: _iconv_open
In Build Phases → Link Binary With Libraries, add libiconv.tbd from the
iOS SDK.
Undefined symbol: boost::context::stack_traits::default_size()
Undefined symbol: _jump_fcontext
Undefined symbol: _make_fcontext
Undefined symbol: _ontop_fcontext
Use a Boost 1.65.0 or newer ofxiOSBoost XCFramework, where Context is included,
and confirm boost.xcframework is linked by the application target.
Older projects may report unresolved std::__1 symbols, particularly when
using compiled libraries such as Serialization:
Undefined symbols for architecture i386:
"std::__1::__vector_base_common<true>::__throw_length_error() const"
Set the target's C++ Standard Library to libc++. Set C++ Language
Dialect to the standard required by the selected release: C++11 through Boost
1.64, or C++14 for Boost 1.65–1.66.
If you happen to include <boost/type_traits.hpp> header file, you may see compile errors like this
Unexpected member name of ';' after declaration specifiers
To fix this problem, include the following line in your porject ***-Prefix.pch file.
#define __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES 0
============
The original checked-in Boost 1.60.0 release used a fat static library rather than an XCFramework. These slices are retained only as documentation for that legacy release and are not targets of the current release workflow. See the historical branches for the original libc++/C++11 variants.
arm64: (iOS 7, 8, 9 64bit only) [iPhone 5S, iPhone 6/6S, iPhone 6/6S Plus, iPad Air /2, iPad Mini Retina 1/2/3/4, iPad Pro]armv7: (iOS 5, 6, 7, 8, 9) [All devices]i386: (iOS Simulator iPad 2, 3, 4, iPhone 4S, 5, 5C)x86_64: (iOS Simulator iPad Air, iPhone 5S, iPhone 6/6S, iPhone 6/6S Plus)
The legacy release did not include armv7s.
============