Skip to content

yanhuangdata/vectorcxx

Folders and files

NameName
Last commit message
Last commit date
Jan 25, 2024
Apr 10, 2024
Apr 10, 2024
Sep 27, 2023
Dec 25, 2023
Nov 11, 2022
Dec 24, 2023
Jan 25, 2024
Apr 10, 2024
Oct 13, 2022
Oct 31, 2022
Aug 30, 2023
Sep 27, 2023
Oct 31, 2022
Apr 10, 2024
Nov 12, 2022
Nov 11, 2022
Nov 24, 2021
Feb 24, 2023
Oct 13, 2022
Apr 10, 2024
Apr 10, 2024
Nov 11, 2022
Apr 10, 2024

Repository files navigation

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