... gegen Computerkopfschmerzen

macOS: BambuStudio unter macOS Sequoia kompilieren

Bambu Studio läßt sich nicht unter macOS Sequoia kompilieren. Das hat mehrere Gründe:
  • Eine zu neue SDK-Version in Xcode in der Version 16 unter macOS Sequoia, siehe Issue #3957 auf GitHub.
  • Abbrüche beim Kompilieren von OCCT und OpenCV aufgrund eines fehlerhaften Parameters, siehe Issue #4158 und Issue #4689 auf GitHub.
Hier folgt eine Anleitung, die etwas ausführlicher als die offizielle Anleitung zum Kompilieren von Bambu Studio ist und auch für macOS Sequoia funktioniert.

1. Installation der benötigten Software

Xcode installieren

Für das Kompilieren von Bambu Studio wird Xcode benötigt. Mit Xcode in der Version 16, welches zu macOS Sequoia gehört, läßt sich Bambu Studio jedoch nicht kompilieren, man erhält eine Fehlermeldung. Mit Xcode 15.2 funktioniert es, diese Version ist allerdings für dieses Betriebssystem zu alt. Wie man mit einem Trick die benötigte Xcode-Version 15 auf macOS Sequoia installiert, steht im Beitrag Xcode 15 unter macOS Sequoia installieren.

Homebrew installieren

Ob Homebrew schon installiert ist, kann man im Terminal mit dem Befehl brew feststellen:
% brew
zsh: command not found: brew

Die Installation von Homebrew läßt sich auf macOS mit Hilfe eines fertigen Pakets in wenigen Schritten durchführen:
  • Homebrew als Paket von GitHub herunterladen.
  • Auf das Paket doppelklicken, die Installation wird ausgeführt.
  • Auf Apple ARM-Rechnern muß jetzt noch der Pfad zu Homebrew gesetzt werden:
    Im Terminal:
    % echo "export PATH=/opt/homebrew/bin:$PATH" >> ~/.zshrc
    % source ~/.zshrc
Die Installation von Homebrew prüfen:
% brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: Your Xcode (15.2) at /Applications/Xcode.app is too outdated.
Please update to Xcode 16.0 (or delete it).
Xcode can be updated from the App Store.

Die Warnungen wegen der Version 15 von Xcode können ignoriert werden.

Wer keine Analysedaten an Homebrew senden möchte, schaltet dieses so aus:
% brew analytics off


Weitere notwendige Software installieren

Die für das Kompilieren von Bambu Studio nötige Software wird mit Homebrew installiert:
brew install cmake git gettext nasm yasm x264


2. Bambu Studio-Dateien herunterladen

Den aktuellen Bambu Studio-Quellcode kann man als zip-Datei von GitHub herunterladen:
BambuStudio-master.zip von GitHub herunterladen

Im folgenden Beispiel liegt die heruntergeladene Datei BambuStudio-master.zip im Ordner Downloads, und das Kompilieren von Bambu Studio findet im Ordner ~/Dokumente/dev statt. Zuerst werden die Quelldateien dorthin kopiert.
Im Terminal:
% cd ~/Documents; mkdir dev; cd dev
% unzip ~/Downloads/BambuStudio-master.zip -d .
% mv BambuStudio-master BambuStudio

Dann wird die notwendige Dateistruktur angelegt:
% mkdir BambuStudio_dep
% cd ~/Documents/dev/BambuStudio/deps
% mkdir build
% cd ~/Documents/dev/BambuStudio % mkdir install_dir % mkdir build

Die fertige Dateistruktur sieht so aus:
Dateistruktur für Bambu Studio


3. Bambu Studio kompilieren

Abhängigkeiten

Im ersten Schritt werden die Abhängigkeiten kompiliert. Dies ist nur einmal notwendig.
Bei mir traten dabei die folgenden Fehler auf:
Fehler: deps/build/dep_OCCT-prefix/src/dep_OCCT/src/Font/Font_FTFont.cxx: No such file or directory
make[2]: *** [dep_OCCT-prefix/src/dep_OCCT-stamp/dep_OCCT-patch] Error 1
make[1]: *** [CMakeFiles/dep_OCCT.dir/all] Error 2
make: *** [all] Error 2

Fehler: deps/build/dep_OpenCV-prefix/src/dep_OpenCV/cmake/templates/OpenCVConfig.root-WIN32.cmake.in: No such file or directory
Prüfe Patch deps/build/dep_OpenCV-prefix/src/dep_OpenCV/cmake/OpenCVDetectCXXCompiler.cmake...
Fehler: deps/build/dep_OpenCV-prefix/src/dep_OpenCV/cmake/OpenCVDetectCXXCompiler.cmake: No such file or directory
make[2]: *** [dep_OpenCV-prefix/src/dep_OpenCV-stamp/dep_OpenCV-patch] Error 1
make[1]: *** [CMakeFiles/dep_OpenCV.dir/all] Error 2
make: *** [all] Error 2

Diese Fehler sind in Issue #4158 und Issue #4689 auf GitHub beschrieben. Man kann sie vermeiden, indem man die ––directory-Flagge aus den folgenden Dateien entfernt:
  • % vi ~/Documents/dev/BambuStudio/deps/OCCT/OCCT.cmake

    vorher:
    PATCH_COMMAND ${GIT_EXECUTABLE} apply ---directory deps/build/dep_OCCT-prefix/src/dep_OCCT- --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch

    hinterher:
    PATCH_COMMAND ${GIT_EXECUTABLE} apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OCCT-fix.patch

  • % vi ~/Documents/dev/BambuStudio/deps/OpenCV/OpenCV.cmake

    vorher:
    PATCH_COMMAND ${GIT_EXECUTABLE} apply --directory deps/build/dep_OpenCV-prefix/src/dep_OpenCV --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OpenCV-fix.patch

    hinterher:
    PATCH_COMMAND ${GIT_EXECUTABLE} apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-OpenCV-fix.patch

Wenn die Dateien vor dem Beginn der Kompilierung verändert wurden, sollte sie gleich ohne Fehler durchlaufen. Je nach Prozessor nutzt man zwei verschiedene Kommandos:
Apple-Chip:
% cd ~/Documents/dev/BambuStudio/deps/build

% cmake ../ -DDESTDIR="~/Documents/dev/BambuStudio_dep" -DOPENSSL_ARCH="darwin64-arm64-cc"

-- Configuring done (3.2s)
-- Generating done (0.1s)
-- Build files have been written to: /Users/katrin/Documents/dev/BambuStudio/deps/build

% make -j2

[100%] Completed 'dep_wxWidgets'
[100%] Built target dep_wxWidgets
[100%] Built target deps

analog bei Intel-Prozessor:
% cd ~/Documents/dev/BambuStudio/deps/build

% cmake ../ -DDESTDIR="~/Documents/dev/BambuStudio_dep" -DOPENSSL_ARCH="darwin64-x86_64-cc"

% make -j2

Hinweis: Beim Befehl make -jN kann man für N eine Zahl zwischen 1 und der max. Anzahl CPUs wählen.

Der make-Befehl läuft sehr lange, aber es wird viel Information ausgegeben, so daß es beim Zusehen nicht langweilig wird.

Wenn Fehler bei Klonen des Repositories auftreten, z. B.
Fehler unable to clone wxWidgets:

[ 84%] Performing download step (git clone) for 'dep_wxWidgets'
Klone nach 'dep_wxWidgets'...
Fehler: RPC fehlgeschlagen; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)
Fehler: 20293 Bytes des Bodys werden noch erwartet
fetch-pack: unexpected disconnect while reading sideband packet
Schwerwiegend: zu frühes Dateiende
Schwerwiegend: fetch-pack: ungültige index-pack Ausgabe
Klone nach 'dep_wxWidgets'…

hilft es, den oder die betreffenden Ordner zu löschen und neu zu starten:
% rm -r ~/Documents/dev/BambuStudio/deps/build/wxWidgets ~/Documents/dev/BambuStudio/deps/build/dep_wxWidgets-prefix/

% make -j2


Bambu Studio kompilieren

Jetzt ist alles vorbereitet, um Bambu Studio zu kompilieren. Wenn man etwas am Quellcode verändert hat, kann man die entsprechende Datei nun in der Dateistruktur im Ordner BambuStudio ersetzen. Dann geht es los:
% cd ~/Documents/dev/BambuStudio/build

% cmake .. -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="~/Documents/dev/BambuStudio_dep/usr/local" -DCMAKE_INSTALL_PREFIX="../install_dir" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MACOSX_RPATH=ON -DCMAKE_INSTALL_RPATH="~/Documents/dev/BambuStudio_dep/usr/local" -DCMAKE_MACOSX_BUNDLE=on

-- CMAKE_CURRENT_BINARY_DIR: /Users/katrin/Documents/dev/BambuStudio/build/src
-- Configuring done (2.2s)
-- Generating done (0.2s)
-- Build files have been written to: /Users/katrin/Documents/dev/BambuStudio/build

% cmake --build . --target install --config Release -j2

-- Installing: /Users/katrin/Documents/dev/BambuStudio/install_dir/include/mcut/mcut.h
-- Installing: /Users/katrin/Documents/dev/BambuStudio/install_dir/include/mcut/platform.h
-- Installing: /Users/katrin/Documents/dev/BambuStudio/install_dir/./LICENSE.txt
-- Installing: /Users/katrin/Documents/dev/BambuStudio/install_dir/./README.md

Der zweite Befehl läuft wieder sehr lange.

Wenn man Änderungen am Programmcode macht und es neu kompilieren möchte, muß man nur den letzten Befehl wiederholen. Das geht dann deutlich schneller, da nur die Änderungen neu kompiliert werden.

4. Bambu Studio nutzen

Das fertige Programm befindet sich im Verzeichnis ~/Documents/dev/BambuStudio/build/src:
BambuStudio-Programm

Es ist als interne Version gekennzeichnet:
BambuStudio: Interne Version


Das kompilierte Programm auf einer anderen Partition nutzen

Wenn man das Programm auf eine andere macOS-Partition kopiert, ist das Programmsymbol ausgegraut und Bambu Studio läßt sich nicht aufrufen.
BambuStudio-app-partition

Dies liegt an einem Link im Programmpaket, der auf das Verzeichnis ~/Documents/dev/BambuStudio/resources zeigt.
resources-link

Nach dem Kopieren auf eine andere Partition (oder wenn das Programm von einer anderen Partition aus aufgerufen wird), zeigt dieser Link an den falschen Ort und muß um das Volume ergänzt werden. Im folgenden Beispiel wurde das Programm auf dem Volume Macintosh HD Sequoia Entwicklung kompiliert, in den Programmordner auf dem Volume Macintosh HD Sequoia kopiert und in BambuStudio_int umbenannt.
Der Link auf resources kann so neu gesetzt werden (Zeichenfolgen in eckigen Klammern anpassen):
% rm <Pfad zu BambuStudio>/Contents/Resources
% ln -s <Pfad zur anderen Partition>/Users/<Benutzername>/Documents/dev/BambuStudio/resources Resources

Beispiel:
% cd /Applications/BambuStudio_int.app/Contents
% ls -al
lrwxr-xr-x 1 katrin admin 80 7 Dez 10:54 Resources -> /Users/katrin/Documents/dev/BambuStudio/resources
% rm Resources
% ln -s /Volumes/Macintosh\ HD\ Sequoia\ Entwicklung/Users/katrin/Documents/dev/BambuStudio/resources Resources
% ls -al
lrwxr-xr-x 1 katrin admin 90 9 Dez 06:57 Resources -> /Volumes/Macintosh HD Sequoia Entwicklung/Users/katrin/Documents/dev/BambuStudio/resources

Viel Spaß beim Erstellen einer eigenen Version von BambuStudio!


Xcode 15.2
Homebrew 4.4.8
Bambu Studio 1.10.1
macOS Sequoia 15.1.1
MacBook Pro M1