Supported versions: 1.87.0, 1.86.0, 1.85.0, 1.84.0, 1.83.0, 1.82.0, 1.81.0, 1.80.0, 1.79.0, 1.78.0, 1.77.0, 1.76.0, 1.75.0 (use the appropriate tag or branch to choose a version)
This repo provides a universal script for building static Boost C++ libraries for use in iOS, visionOS, and macOS & Catalyst applications.
Since the Boost distribution URLs are often broken and change, the script tries to download it from the links specified in the LOCATIONS file. Only after the SHA256 hash of the downloaded archive is verified, the libraries are unpacked and compiled.
atomic, charconv, chrono, cobalt (requires apple clang-15.0.0 or later), container, context, contract, coroutine, date_time, exception, fiber, filesystem, graph, iostreams, json, locale, log, math, nowide, program_options, random, regex, serialization, stacktrace, system, test, thread, timer, type_erasure, url, wave
graph_parallel, mpi, python
- Xcode must be installed because xcodebuild is used to create xcframeworks
xcode-select -p
must point to Xcode app developer directory (by default e.g. /Applications/Xcode.app/Contents/Developer). If it points to CommandLineTools directory you should execute:sudo xcode-select --reset
orsudo xcode-select -s /Applications/Xcode.app/Contents/Developer
- You should not have your own user-config.jam file in your home directory!
- For the creation of visionOS related artifacts and their integration into the resulting xcframeworks, XROS.platform and XRSimulator.platform should be available in the folder: /Applications/Xcode.app/Contents/Developer/Platforms
- The 'locale' and 'regex' libraries are built using the ICU backend. ICU build scripts are taken from https://github.com/apotocki/icu4c-iosx and run using the 'pod' utility.
- The 'test' library is built for iOS with the BOOST_TEST_NO_MAIN flag.
- Manually
# clone the repo
git clone https://github.com/apotocki/boost-iosx
# build libraries
cd boost-iosx
scripts/build.sh
# have fun, the result artifacts will be located in 'frameworks' folder.
# Then you can add desirable xcframeworks in your XCode project. The process is described, e.g., at https://www.simpleswiftguide.com/how-to-add-xcframework-to-xcode-project/
- Use cocoapods. Add the following lines into your project's Podfile:
use_frameworks!
pod 'boost-iosx'
# or optionally more precisely, e.g.:
# pod 'boost-iosx', :git => 'https://github.com/apotocki/boost-iosx'
If you want to use particular boost libraries, specify them as in the following example for log and program_options libraries:
pod 'boost-iosx/log'
pod 'boost-iosx/program_options'
# note: Some libraries depend on other Boost libraries. In this case, you should explicitly add all their dependencies to your Podfile.
Then install new dependencies:
pod install --verbose
The Boost libraries built by this project are used in my iOS application on the App Store:
PotoHEX HEX File Viewer & Editor | |
This application is designed to view and edit files at the byte or character level; calculate different hashes, encode/decode, and compress/decompress desired byte regions.
You can support my open-source development by trying the App.
Feedback is welcome!