Bambu and Snapmaker 3D Designer Build and Installation

Published on
Last updated on
Technical
AI

Since Bambu and Snapmaker 3D Designer software on Linux is only available as AppImage bundles or Flatpaks, and I prefer not to use those formats, I decided to build them myself from source.

Bambu

#!/bin/bash
export ROOT=$(pwd)
export CMAKE_POLICY_VERSION_MINIMUM=3.5
sudo apt install -y git cmake clang g++ build-essential m4 pkgconf libgl1-mesa-dev libglu1-mesa-dev libosmesa6-dev libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-4.1-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad nasm yasm libx264-dev libboost-filesystem-dev libboost-system-dev libboost-thread-dev libboost-log-dev libboost-locale-dev libboost-iostreams-dev libcurlpp-dev libglew-dev libglfw3-dev libcereal-dev libnlopt-dev libnlopt-cxx-dev libopenvdb-dev libopenvdb-tools libwxgtk3.2-dev libcgal-dev libopencv-dev libocct-foundation-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-modeling-data-dev libocct-modeling-algorithms-dev libocct-visualization-dev libnanovdb-tools
rm -rf deps/build deps/install
mkdir -p deps/build deps/install
cmake --fresh -S deps -B deps/build -G Ninja -DDESTDIR=deps/install -DCMAKE_BUILD_TYPE=Release -DDEP_WX_GTK3=1 -DJPEG_VERSION=8 -DOPENVDB_FIND_MODULE_PATH=/usr/lib/x86_64-linux-gnu/cmake/OpenVDB
cmake --build deps/build
rm -rf bambustudio_build
mkdir -p bambustudio_build
cmake --fresh -S . -B bambustudio_build -DSLIC3R_STATIC=ON -DSLIC3R_GTK=3 -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="${ROOT}/deps/install/usr/local" -DCMAKE_INSTALL_PREFIX=/opt/BambuStudio/ -DCMAKE_BUILD_TYPE=Release
sudo cmake --build bambustudio_build --target install --config Release

Snapmaker

  • Build and Install

    export ROOT=$(pwd)
    #!/bin/bash
    export CMAKE_POLICY_VERSION_MINIMUM=3.5
    sudo apt install -y git cmake clang g++ build-essential m4 pkgconf libgl1-mesa-dev libglu1-mesa-dev libosmesa6-dev libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules libcairo2-dev libgtk-3-dev libsoup2.4-dev libwebkit2gtk-4.1-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad nasm yasm libx264-dev libboost-filesystem-dev libboost-system-dev libboost-thread-dev libboost-log-dev libboost-locale-dev libboost-iostreams-dev libcurlpp-dev libglew-dev libglfw3-dev libcereal-dev libnlopt-dev libnlopt-cxx-dev libopenvdb-dev libopenvdb-tools libwxgtk3.2-dev libcgal-dev libopencv-dev libocct-foundation-dev libocct-data-exchange-dev libocct-ocaf-dev libocct-modeling-data-dev libocct-modeling-algorithms-dev libocct-visualization-dev libnanovdb-tools
    rm -rf deps/build deps/install
    mkdir -p deps/build deps/install
    cmake --fresh -S deps -B deps/build -G Ninja -DDESTDIR=deps/install -DCMAKE_BUILD_TYPE=Release -DDEP_WX_GTK3=1 -DJPEG_VERSION=8 -DOPENVDB_FIND_MODULE_PATH=/usr/lib/x86_64-linux-gnu/cmake/OpenVDB
    cmake --build deps/build
    rm -rf snapemaker_build
    mkdir -p snapemaker_build
    cmake --fresh -S . -B snapemaker_build -G "Ninja Multi-Config" -DCMAKE_PREFIX_PATH="${ROOT}/deps/install/usr/local" -DCMAKE_INSTALL_PREFIX=/opt/snapmaker/ -DCMAKE_BUILD_TYPE=Release -DSLIC3R_STATIC=1 -DSLIC3R_PCH=OFF -DORCA_TOOLS=ON -DSLIC3R_GTK=3
    sudo cmake --build snapemaker_build --config Release --target install
  • create a wrapper /opt/snapmaker/snapmaker-orca, since additional envronment variables should be configured.

    #!/bin/bash
    DIR=$(dirname "$(readlink -f "$0")")
    export LD_LIBRARY_PATH="$DIR/bin:$LD_LIBRARY_PATH"
    export LC_ALL=C
    export DBUS_FATAL_WARNINGS=0
    if [ "$XDG_SESSION_TYPE" = "wayland" ] && [ "$ZINK_DISABLE_OVERRIDE" != "1" ]; then
    if command -v glxinfo >/dev/null 2>&1; then
    RENDERER=$(glxinfo | grep "OpenGL renderer string:" | sed 's/.*: //')
    if echo "$RENDERER" | grep -qi "NVIDIA"; then
    ZINK_FORCE_OVERRIDE=1
    if command -v nvidia-smi >/dev/null 2>&1; then
    DRIVER_VERSION=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader | head -n1)
    DRIVER_MAJOR=$(echo "$DRIVER_VERSION" | cut -d. -f1)
    [ "$DRIVER_MAJOR" -le 555 ] && ZINK_FORCE_OVERRIDE=0
    fi
    if [ "$ZINK_FORCE_OVERRIDE" = "1" ]; then
    export __GLX_VENDOR_LIBRARY_NAME=mesa
    export __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json
    export MESA_LOADER_DRIVER_OVERRIDE=zink
    export GALLIUM_DRIVER=zink
    export WEBKIT_DISABLE_DMABUF_RENDERER=1
    fi
    fi
    fi
    fi
    exec "$DIR/bin/snapmaker-orca" "$@"
Back to Blog