Code Monkey home page Code Monkey logo

vectorcxx's Introduction

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

vectorcxx's People

Contributors

niyue avatar probrian avatar ninapeng avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.