Open Cascade Technology (OCCT) Sandbox. Place to play around with the API.
To generate a build, I'm relying on a build system, make. However, the build system is created by cmake, a tool to generate a build system, platform independent. What it does, after some initial configuration, is building a build folder containing all necessary files and a preconfigured Makefile where all links and libraries locations are added to generate a binary using make.
In the main directory, simply run make to execute a couple of shell scripts that:
- run
cmakeand make the build directory - run
makeinside the build directory - run the binary that has been created
You can have a look inside the tools directory what the shell scripts are doing.
As you probably noticed, make is used twice in this workflow. By running make inside the main directory, the configure, build and run procedure is started which consists of the 3 earlier discussed steps. In the second step, make is used to start the build in the build directory.
While I'm not following the best practices at the moment, this might change in the futur. I'll follow this guideline whenever this project start to become bigger.
One of the dependencies is Open Cascade ofcourse. The installation procedure depends on the operating system you're running. Currently, I'm only including the installation process for linux and mac.
We need to distinguish OCE and OCCT, both related to Open Cascade Technology, but the first one is the Community Edition. It includes a couple of patches. However, the ease of installation depends on the operating system. OCE is very easy to install on Ubuntu, while OCCT is the easiest on MacOS.
To build the code, you'll need a compiler like gpp, make and cmake.
To install cmake, please see the official documentation.
Normally, make should come out of the box (I guess so...). To install cmake, you could also use snap (snap install cmake) to install the tool on Ubuntu.
Run the following:
sudo apt update -qq
sudo apt install -y liboce-*Install XCode (see the Apple Developer website) and the command line utilities (sudo xcode-select --install). Make sure to have cmake installed as well.
Then, install Homebrew (see official documentation), and run the following:
brew install opencascadeFirst, you need to isntall a C++ compiler. Follow the installation guide of MSYS2. After the installation, add the directory to your path.
Add the following paths to %PATH%
C:\Users\<user>\AppData\Local\MSYS2\usr\bin\
C:\Users\<user>\AppData\Local\MSYS2\mingw64\bin\In my case, I choose to install MSYS2 inside my user folder.
To test if it's working, check if make and gcc are available using where <command>.
After installing the compiler, we'll install cmake. Download the .zip from their website and locate the extracted files inside the following path:
C:\Users\<user>\AppData\Local\CMake\Add the following path to your %PATH%, see the method above:
C:\Users\<user>\AppData\Local\CMake\binCheck if it's working: where cmake
This method has not completely failed. During the compilation of the script
hello.cpp, I've got a warning about a packagelibTKXSDRAW.dll.athat was not found. I don't know why, but the file hasn't been compiled during the process. Possibly, it has to do with some options I set. However, I advise you to use method 2 since it doesn't require you to compile all code.
Download the .tgz from the official docs and uncompress the file.
Move the files to:
C:\Users\BEGILT\AppData\Local\OCCTNow, we need to compile the source data. However, Open Cascade depends on some other packages.
You can download a precompiled package from their website. Freetype is required. Download the .7z for MinGW and move the files to:
# Add Freetype
C:\Users\<user>\AppData\Local\FreetypeYou could also build the files from source, see the guidelines on the website of Open Cascade.
Follow the same procedure for Tcl, because it's also required! Store it in the following folder:
# Add Freetype
C:\Users\<user>\AppData\Local\TclThe next step is to generate the build script for OCCT and compile the package (that might take a while!):
cmake -G"MSYS Makefiles" -D USE_VTK=OFF -D USE_FREEIMAGE=OFF -D USE_D3D=OFF -D 3RDPARTY_FREETYPE_DIR="C:/Users/BEGILT/AppData/Local/Freetype" -D 3RDPARTY_TCL_DIR="C:/Users/BEGILT/AppData/Local/Tcl" -S . -B C:/OCCTAfter generating the build script, navigate to the build directory and build using make:
cd C:/OCCT && makeAfter finishing the build process, navigate to C:/OCCT and run the following.
It's a tempory fix for a bug I was encountering.
#!/bin/bash
mkdir -p "cmake"
mv ./OpenCASCADE*.cmake ./cmake
mv ./CMakeFiles/Export/cmake/OpenCASCADE*.cmake ./cmake
sed -i 's:\\${OCCT_INSTALL_BIN_LETTER}::g' ./cmake/OpenCASCADE*-release.cmakeDuring the compilation of the script hello.cpp, I've got a warning about a package libTKXSDRAW.dll.a that was not found. I don't know why, but the file hasn't been compiled during the process. Possibly, it has to do with some options I set.
Open the MSYS2 MinGW 64-bit terminal. Run the following:
pacman -Syu
# Install OpenCASCADE
pacman -S mingw-w64-x86_64-opencascadeAfter installation, fix the bug like in approach 1.
sed -i 's:\\${OCCT_INSTALL_BIN_LETTER}::g' C:/Users/<username>/AppData/Local/MSYS2/mingw64/lib/cmake/opencascade/OpenCASCADE*-release.cmakeAdd the path to your CMakeLists.txt in order to find the OCCT installation during build. In case of approach 1, this is C:/OCCT and in case of approach 2 it's C:/Users/<username>/AppData/Local/MSYS2/mingw64/.
I stumbled upon the FindOpenCasCade.cmake file by FreeCAD. This file contains a lot of intersting code I could use in this project. While FreeCAD depends on OCE, I adapted the script to search for OCCT on MacOS.
- Install instructions Unix
- Install instructions MacOS
- Install instructions Windows
- Powershell/Bash script to simplify the installation
- Simplify the
CMakeLists.txtto accomodate the different platforms

