Installation ============ If you'd like to work with the C++ core of IfcOpenShell, these guides will show you how to compile and install IfcOpenShell. .. note:: It is not necessary to compile IfcOpenShell if you only want to use IfcOpenShell-Python, IfcConvert, or the other utilities such as IfcClash or IfcDiff. Compilation is only necessary for C++ developers. You will need: - `Git `__ - `CMake `__ (3.1.3 or newer) IfcOpenShell depends on: - `Boost `__ - (Optional) `OpenCascade `__ - for building IfcGeom For converting IFC representation items into BRep solids and tessellated meshes - (Optional) `OpenCOLLADA `__ - for IfcConvert to be able to write tessellated Collada (.dae) files - (Optional) `SWIG `__ and `Python `__ - for building the IfcOpenShell Python interface and use in the BlenderBIM Add-on - (Optional) `HDF5 `__ - for caching geometry using the HDF5 format Compiling on Linux ------------------ The following instructions are for Ubuntu, modify as required for other operating systems. GCC (4.7 or newer) or Clang (any version) is required. .. seealso:: The `nix/build-all.py `__ script can be experimented with and studied for pointers for other operating systems. Note that this script is not currently meant to be used for a typical IfcOpenShell workspace setup. 1. Fetch the latest source code, including all submodules. :: $ git clone --recursive https://github.com/IfcOpenShell/IfcOpenshell.git .. warning:: The path where the source code is cloned to can contain spaces but non-ASCII characters are very likely to cause problems with the build. 2. Install basic dependencies: :: $ sudo apt-get install git cmake gcc g++ libboost-all-dev libcgal-dev 3. Install OpenCascade Technology (OCCT). :: $ sudo apt-get install libocct-data-exchange-dev libocct-draw-dev libocct-foundation-dev libocct-modeling-algorithms-dev libocct-modeling-data-dev libocct-ocaf-dev libocct-visualization-dev .. seealso:: If OCCT is not available, you can `manually compile OCCT `__. Alternatively you may use OpenCascade Community Edition (OCE) but it may lag behind OCCT so is not recommended. :: $ sudo apt-get install liboce-foundation-dev liboce-modeling-dev liboce-ocaf-dev liboce-visualization-dev liboce-ocaf-lite-dev You may also manually compile OCE: :: $ sudo apt-get install libftgl-dev libtbb2 libtbb-dev libgl1-mesa-dev libfreetype6-dev $ git clone https://github.com/tpaviot/oce.git $ cd oce $ mkdir build && cd build $ cmake .. # Replace X with number of CPU cores + 1 $ make -j X $ sudo make install 4. For building IfcConvert with COLLADA (.dae) support (on by default), OpenCOLLADA is needed: :: $ sudo apt-get install libpcre3-dev libxml2-dev $ git clone https://github.com/KhronosGroup/OpenCOLLADA.git $ cd OpenCOLLADA # Using a known good revision, but HEAD should work too: $ git checkout 064a60b65c2c31b94f013820856bc84fb1937cc6 $ mkdir build && cd build $ cmake .. # Replace X with number of CPU cores + 1 $ make -j X $ sudo make install 5. For building the IfcPython wrapper (on by default), SWIG and Python development are needed: :: $ sudo apt-get install python-all-dev swig 6. For building support for HDF5 caching (off by default), install dependencies: :: $ sudo apt-get install libhdf5-dev libaec-dev zlibc 7. Compile IfcOpenShell itself. :: $ cd /path/to/IfcOpenShell $ mkdir build && cd build # Customise the compile options to suit your environment # Check all paths are valid for your environment $ cmake ../cmake \ -DOCC_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu/ \ -DOCC_INCLUDE_DIR=/usr/include/ \ # Optional Collada support -DCOLLADA_SUPPORT=On -DOPENCOLLADA_INCLUDE_DIR="/usr/local/include/opencollada" \ -DOPENCOLLADA_LIBRARY_DIR="/usr/local/lib/opencollada" \ -DPCRE_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu/ \ # Optional HDF5 support -DHDF5_SUPPORT=On -DHDF5_LIBRARIES="/usr/local/hdf5/lib/libhdf5_cpp.so;/usr/local/hdf5/lib/libhdf5.so;/usr/lib64/libz.so;/usr/lib64/libsz.so;/usr/lib64/libaec.so" \ -DHDF5_INCLUDE_DIR="/usr/local/hdf5/include" \ -DCGAL_INCLUDE_DIR=/usr/include \ -DGMP_INCLUDE_DIR=/usr/include \ -DMPFR_INCLUDE_DIR=/usr/include \ -DGMP_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu \ -DMPFR_LIBRARY_DIR=/usr/lib/x86_64-linux-gnu # Replace X with number of CPU cores + 1 $ make -j X # Optionally install to the system $ sudo make install Compiling on MacOS ------------------ GCC (4.7 or newer) or Clang (any version) is required. 1. Fetch the latest source code, including all submodules. :: $ git clone --recursive https://github.com/IfcOpenShell/IfcOpenshell.git .. warning:: The path where the source code is cloned to can contain spaces but non-ASCII characters are very likely to cause problems with the build. 2. Install all dependencies using `Homebrew `__ :: $ brew install boost swig cmake ftgl cgal gmp libaec opencascade 3. Build IfcOpenShell with flags for Homebrew dependencies (``/usr/local/``) :: $ cd /path/to/IfcOpenShell $ mkdir build && cd build $ cmake ../cmake -DOCC_LIBRARY_DIR=/usr/local/lib/ \ -DOCC_INCLUDE_DIR=/usr/local/include/opencascade/ \ -DCOLLADA_SUPPORT=0 \ -DCGAL_INCLUDE_DIR=/usr/local/include/ \ -DGMP_LIBRARY_DIR=/usr/local/lib/ \ -DMPFR_LIBRARY_DIR=/usr/local/lib/ # Replace X with number of CPU cores + 1 $ make -j X -lboost_options Compiling on Windows (Visual Studio) ------------------------------------ This is for users of `Visual Studio `__ 2008 to 2019 (2022 not yet supported by dependency CMake) with C++ toolset (or `Visual C++ Build Tools `__). 1. Fetch the latest source code, including all submodules. :: $ git clone --recursive https://github.com/IfcOpenShell/IfcOpenshell.git .. warning:: The path where the source code is cloned to can contain spaces but non-ASCII characters are very likely to cause problems with the build. 2. Assuming Visual Studio 2015 x64 environment variables set, build dependencies and run cmake. :: $ cd IfcOpenShell\win $ build-deps.cmd $ run-cmake.bat 3. Open and build the solution file in Visual Studio: :: $ ..\build-vs2015-x64\IfcOpenShell.sln As the scripts default to using the ``RelWithDebInfo`` configuration, and a freshly created solution by CMake defaults to ``Debug``, make sure to switch the used build configuration. Build the ``INSTALL`` project (right-click -> Project Only) to deploy the headers and binaries into a single location if wanted/needed. Alternatively, one can use the utility batch file(s) to build and install the project easily from the command-line (installing a project will build it also, if required): :: $ install-ifcopenshell.bat .. seealso:: For more information on configuring a Windows compilation see the `Windows Readme `__. Compiling on Windows (MSYS2 + MinGW) ------------------------------------ This is for users of `MSYS2 `__ and `MinGW `__. 1. Fetch the latest source code, including all submodules. :: $ git clone --recursive https://github.com/IfcOpenShell/IfcOpenshell.git .. warning:: The path where the source code is cloned to can contain spaces but non-ASCII characters are very likely to cause problems with the build. 2. Start the MSYS2 Shell and then: :: $ cd IfcOpenShell/win $ ./build-deps.sh $ ./run-cmake.sh $ ./install-ifcopenshell.sh .. seealso:: For more information on configuring a Windows compilation see the `Windows Readme `__. Packaged installation --------------------- - **Arch Linux**: `Direct from Git `__.