From 20d2e2e470794284be035bd16d6e2ca660b51eb6 Mon Sep 17 00:00:00 2001 From: alemuntoni Date: Fri, 25 Nov 2022 14:47:28 +0100 Subject: [PATCH] docs --- scripts/Windows/README.md | 6 ++++++ src/README.md | 32 +++++++++++++++++++++----------- src/external/README.md | 14 +++++++++++--- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/scripts/Windows/README.md b/scripts/Windows/README.md index 35858b9cb..28aa46950 100644 --- a/scripts/Windows/README.md +++ b/scripts/Windows/README.md @@ -2,6 +2,12 @@ This folder contains a series of scripts to build and deploy MeshLab under a Windows environment. +## Note about the compiler + +On Windows, we use MSVC compiler to build MeshLab. Before trying to build MeshLab, you should download and install VisualStudio with the C++ developer package, which contains the MSVC compiler. + +Other compilers are not tested. + ## Note about Qt MeshLab requires Qt 5.15. You can both install Qt5 using `choco` or manually in your system. diff --git a/src/README.md b/src/README.md index a203158c8..6094a192c 100644 --- a/src/README.md +++ b/src/README.md @@ -5,42 +5,52 @@ In the `src` directory there are several folders containing all the source code The source code of MeshLab is structured in the following directories: * cmake: it contains a series of cmake scripts used to find external libraries; - * [external](https://github.com/cnr-isti-vclab/meshlab/tree/master/src/external): it contains a series of external libraries needed by several plugins. Some of these libraries are compiled before the compilation of meshlab, if a corresponding system library is not found and then linked; other are header-only libraries that are just included; + * [external](https://github.com/cnr-isti-vclab/meshlab/tree/master/src/external): it contains a series of cmake configuration files that will download external libraries needed by MeshLab and several plugins; * [common](https://github.com/cnr-isti-vclab/meshlab/tree/master/src/common): a series of utility classes and functions used by MeshLab and its plugins; * [meshlab](https://github.com/cnr-isti-vclab/meshlab/tree/master/src/meshlab): GUI and core of MeshLab; * [meshlabplugins](https://github.com/cnr-isti-vclab/meshlab/tree/master/src/meshlabplugins): all the plugins that can be added to MeshLab; - * [use_cpu_opengl](https://github.com/cnr-isti-vclab/meshlab/tree/master/src/use_cpu_opengl): a tool compiled only under windows that allows to use non-GPU accelerated OpenGL calls; + * [use_cpu_opengl](https://github.com/cnr-isti-vclab/meshlab/tree/master/src/use_cpu_opengl): a tool compiled only under windows that allows to use non-GPU accelerated OpenGL functions; * [vcglib](https://github.com/cnr-isti-vclab/meshlab/tree/master/src/vcglib): submodule containing the vcglib. ## Build MeshLab -MeshLab builds with the three major compilers: `gcc`, `clang`, and `msvc`. It requires [Qt](https://www.qt.io/) 5.15. +MeshLab builds with the three major compilers: `gcc`, `clang`, and `msvc`. It requires [Qt](https://www.qt.io/) 5.15, cmake and optionally ninja (required on windows). Only 64 bit is supported. After setting up the Qt environment: ``` git clone --recursive https://github.com/cnr-isti-vclab/meshlab -mkdir meshlab/src/build -cd meshlab/src/build +mkdir meshlab/build +cd meshlab/build cmake .. make ``` -You can also use [QtCreator](https://www.qt.io/product) to build meshlab: +or, using ninja (supported also on Windows): + +``` +cmake -GNinja .. +ninja +``` + +You can also use [QtCreator](https://www.qt.io/product) to build MeshLab: 1. Install QtCreator and Qt 5.15; -2. Open `CMakeLists.txt` inside `src`; -3. Select your favourite shadow build directory; -4. Build meshlab. +2. Open `CMakeLists.txt`; +4. Configure and build MeshLab. + +### External libraries + +External libraries required by plugins, if not found, are automatically downloaded by `cmake` during the configuration, and placed into `src/external/downloads`. ### Platform specific notes On __osx__ some plugins exploit openmp parallelism (screened poisson, isoparametrization) so you need a compiler supporting it and the clang provided by xcode does not support openmp. You can install all the required libraries by running the following command in a terminal: ``` -brew install llvm libomp +brew install libomp ``` -On __Windows__, we suggest to build meshlab using QtCreator. Before trying to build, you should: +On __Windows__, we suggest to build MeshLab using QtCreator. Before trying to build, you should: * install VisualStudio >= 2017 with the C++ development package; * install Qt 5.15 and QtCreator. diff --git a/src/external/README.md b/src/external/README.md index 93b69415f..d95fc5189 100644 --- a/src/external/README.md +++ b/src/external/README.md @@ -1,14 +1,22 @@ # External libraries for MeshLab -Notes about external libraries: +This folder contains a set of `cmake` configuration files to download and build external libraries required by MeshLab and its plugins. + +Most of the times, `cmake` will first try to find the required external libraries, and only if they are not found, it will download them. ## Required libraries +The libraries that are required to build MeshLab are: + - GLEW - easyexif -Without these two libraries (or their relative system provided libraries), MeshLab cannot be compiled. +Without these two libraries (or their relative system provided libraries), MeshLab cannot be built. ## Optional libraries -Boost and CGAL directories contain only a portion of the libraries, that is the code necessary to build the `mesh_booleans` plugin. +All the other libraries are optional. Cmake adopts the following strategy: + +- Try to find the library in the system (if a package of the library exists). If it is found, nothing else need to be done; +- If the library is not found, try to download the source code of the library and place it into the `downloads` folder. If the download succeeds, the library is built along with MeshLab; +- If the download does not succeed, all the plugins that require that library are ignored and won't be built.