# MacOS Scripts

This folder contains a series of scripts to build and deploy MeshLab under a MacOS environment.

The following scripts are provided:

* `macos_setup_env.sh`: this script installs all the required dependencies that are necessary to build MeshLab and create its DMG in a MacOS machine (tested in 10.15 Catalina). It requires [homebrew](https://brew.sh/) installed.
* `macos_build.sh`: this script compiles MeshLab in a MacOS environment:
	* it requires a properly set Qt environment (see `macos_setup_env.sh`); 
	* without given arguments, all the binaries will be placed in the `meshlab/distrib` folder. You can give as argument the `BUILD_PATH`, and meshlab binaries will be then placed inside `BUILD_PATH/distrib`;
* `macos_build_meshlab_mini.sh`: this script compiles MeshLab mini in a MacOS environment. Works in the same way as the `macos_build.sh` script;
* `macos_deploy.sh`: makes the `distrib/meshlab.app` app a portable version of MeshLab (no Qt and other libraries dependencies):
	* it requires a properly built meshlab `distrib` directory (see `macos_build.sh`);
	* without given arguments, the meshlab.app that will be deployed should be inside `meshlab/distrib`. You can give as argument the `DISTRIB_PATH`;
* `macos_dmg.sh`: this script generates a [DMG](https://en.wikipedia.org/wiki/Apple_Disk_Image) that can be used to install MeshLab; 
	* it requires a properly deployed meshlab `meshlab.app` directory (see `macos_deploy.sh`), a properly set Qt environment, and `appdmg` installed (see `macos_setup_env.sh`);
	* without given arguments, the meshlab.app that will be used should be inside `meshlab/distrib`. You can give as argument the `DISTRIB_PATH`.
* `macos_make_it.sh`: this script builds, deploys and generates a [DMG](https://en.wikipedia.org/wiki/Apple_Disk_Image) that can be used to install MeshLab;
	* it requires a properly set Qt environment and `appdmg` installed (see `macos_setup_env.sh`); 
	* without given arguments, all the binaries will be placed in the `meshlab/distrib` folder. You can give as argument the `BUILD_PATH`, and meshlab binaries and the DMG will be then placed inside `BUILD_PATH/distrib`;

## Examples

Building meshlab on a clean MacOS environment (compiled MeshLab in `meshlab/distrib`):

	git clone --recursive https://github.com/cnr-isti-vclab/meshlab
	sh meshlab/install/macos/macos_setup_env.sh
	sh meshlab/install/macos/macos_build.sh

Building and generating DMG on a clean MacOS environment, build directory in `~/build_meshlab`:

	git clone --recursive https://github.com/cnr-isti-vclab/meshlab
	sh meshlab/install/macos/macos_setup_env.sh
	sh meshlab/install/macos/macos_make_it.sh ~/build_meshlab
	
Meshlab*.dmg can be found in `~/build_meshlab/distrib/`.