Skip to content

Latest commit

 

History

History
56 lines (50 loc) · 1.62 KB

README.md

File metadata and controls

56 lines (50 loc) · 1.62 KB

vectorcxx

  • This project is a C++ wrapper for vector

how it works

  • This project uses cxx to call Rust code from C++, and uses corrosion to integrate the library into CMake.

build on Apple Silicon for arm64

  • use nightly-aarch64-apple-darwin rust toolchain
  • Export the following environment variables
VCPKG_DEFAULT_TRIPLET=arm64-osx
VCPKG_DEFAULT_HOST_TRIPLET=arm64-osx

develop (on macOS)

  • add submodule for vectorcxx
# only needed to be run for the first time
git submodule update --init --recursive
  • configure and build
export VECTORCXX_VCPKG_MANIFEST_DIR=$PWD/ci/dev_image
  • install sccache and use it for build caching(optianal)
cargo install sccache
export RUSTC_WRAPPER=/Users/cj/.cargo/bin/sccache
just cmake
# this will use vcpkg manifest mode to install all the dependencies
just build
  • patch vector Cargo.toml
# only needed to be installed for the first time user
# remember that tomlpatch requires python version >= 3.10.0
just install_toml_patch
just patch

Commit the Cargo.toml and Cargo.lock in the patch directory to the vectorcxx repo

  • re-generate CMakelists.txt Everytime CMakelists.txt is re-generated, the following changes need to be made (until we remove all of them out of it):
  • if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin") branch for dependencies

development x64 under Apple Silicon with Rosetta

  1. Open terminal with Rosetta
  2. Set toolchain
just x64_toolchain

# use direnv + .envrc is recommended for env var management
export CMAKE_OSX_ARCHITECTURES=x86_64