Skip to content

Builds Boost C++ libraries and packages them as XCFrameworks for iOS (simulator and device), visionOS (simulator and device), macOS, and Mac Catalyst (Intel & Apple Silicon M1).

License

Notifications You must be signed in to change notification settings

apotocki/boost-iosx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Boost C++ for iOS, visionOS, macOS (Intel & Apple Silicon M1) & Catalyst - arm64 / x86_64

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.

Building libraries

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

Not building libraries

graph_parallel, mpi, python

Prerequisites

  1. Xcode must be installed because xcodebuild is used to create xcframeworks
  2. 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 or sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
  3. You should not have your own user-config.jam file in your home directory!
  4. 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

Building notes

  1. 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.
  2. The 'test' library is built for iOS with the BOOST_TEST_NO_MAIN flag.

How to build?

  • 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

As an advertisement…

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!

About

Builds Boost C++ libraries and packages them as XCFrameworks for iOS (simulator and device), visionOS (simulator and device), macOS, and Mac Catalyst (Intel & Apple Silicon M1).

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published