You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
3.5 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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
```