Files
WebCC/doc/Build-on-Mac.md
T

119 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Build on Mac
## Install Xcode
You should install Xcode as the step 0.
## Install CMake
Download the .dmg from [here](https://cmake.org/download/). Just double click and follow the instructions.
## Install Boost
Download the .tar.bz2 or .tar.gz from [here](https://www.boost.org/users/download/#live).
Unpack and go into the directory (suppose Boost version is 1.74):
```
tar -xzf boost_1_74_0.tar.bz2
cd boost_1_74_0
```
Run `bootstrap.sh` to generate `b2`:
```
./bootstrap.sh
```
You can change install prefix with `--prefix` option (default is `/usr/local`, need `sudo`), but I don't recommend.
Build and install:
```
sudo ./b2 --with-system --with-date_time --with-filesystem variant=debug link=static threading=multi -j4 install
```
Notes:
- Only build the specified libraries. `Asio` itself is header only so doesnt have to be built.
Only build static libraries (`link=static`)
- The number after `-j` depends on the number of CPU cores you have.
- If you want to build release version libraries, set `variant=release`. The `debug` and `release` libraries have exactly the same name, so you cannot build them both at the same time.
- Dont forget the `sudo` since the install prefix is `/usr/local`.
To clean the build, run `b2` with target "clean":
```
./b2 clean
```
The libraries are installed to `/usr/local/lib`. E.g.,
```
$ ls -l /usr/local/lib/libboost*
-rw-r--r-- 1 adam admin 540288 Apr 21 11:01 /usr/local/lib/libboost_date_time.a
-rw-r--r-- 1 root admin 2976 Apr 21 11:01 /usr/local/lib/libboost_system.a
...
```
The headers are installed to `/usr/local/include/boost`.
**IMPORTANT**
Remove the following directory otherwise CMake couldnt find Boost.
```
sudo rm -r /usr/local/lib/cmake
```
This directory was installed by `b2`. I cant see why its necessary.
## Install OpenSSL
Install with [Homebrew](https://brew.sh/) (the usage of Homebrew itself is out of the scope, please Google and learn it by yourself):
```
brew install openssl
```
Please note that it will be installed to `/usr/local/opt/openssl` instead of `/usr/local`.
## Install Zlib
Zlib should have already been provided by the system (`/usr/lib/libz.dylib`). If not, try to install with Homebrew.
## Build Webcc
Open CMake, set **Where is the source code** to Webcc root directory (e.g., `/Users/adam/github/webcc`), set **Where to build the binaries** to any directory (e.g., `/Users/adam/github/webcc_build`).
Check _**Grouped**_ and _**Advanced**_ two check boxes.
Click _**Configure**_ button. Select "Unix Makefiles" (or "Xcode") as the generator in the popup dialog.
In the center of CMake, you can see a lot of configure options which are grouped and might also be highlighted in RED.
![CMake config](screenshots/mac_cmake_config.png)
Now change the options according to your need. E.g.,
![CMake config](screenshots/mac_cmake_config_2.png)
Click _**Configure**_ button again, a message would say that OpenSSL couldnt be found.
> Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
Dont try to set the `OPENSSL_ROOT_DIR` system variable, it wont work.
As aforementioned, the OpenSSL was installed by Homebrew, and its located in `/usr/local/opt/openssl`. Lets tell CMake where it is.
![CMake config OpenSSL](screenshots/mac_cmake_config_openssl.png)
Click _**Configure**_ button again. If everything is OK, click _**Generate**_ button.
Open Terminal, go to the build directory, run `make`. E.g.,
```
$ cd github/webcc_build
$ make -j4
```