Update readme with new build instructions

This commit is contained in:
Nicolas Werner 2020-01-26 23:36:56 +01:00
parent 6e3e216156
commit 0d22da6288
1 changed files with 57 additions and 51 deletions

108
README.md
View File

@ -19,18 +19,20 @@ Help us with translations so as many people as possible will be able to use nhek
### Note regarding End-to-End encryption ### Note regarding End-to-End encryption
Currently the implementation is at best a **proof of concept** and it should only be used for Currently the implementation is at best a **proof of concept** and it should only be used for
testing purposes. testing purposes. Most importantly, it is missing device verification, so while your messages
and media are encrypted, nheko doesn't verify who gets the messages.
## Features ## Features
Most of the features you would expect from a chat application are missing right now Most of the features you would expect from a chat application are missing right now
but we are getting close to a more feature complete client. but we are getting close to a more feature complete client.
Specifically there is support for: Specifically there is support for:
- E2E encryption (text messages only: attachments are currently sent unencrypted). - E2E encryption.
- User registration. - User registration.
- Creating, joining & leaving rooms. - Creating, joining & leaving rooms.
- Sending & receiving invites. - Sending & receiving invites.
- Sending & receiving files and emoji (inline widgets for images, audio and file messages). - Sending & receiving files and emoji (inline widgets for images, audio and file messages).
- Replies with text, images and other media (and actually render them as inline widgets).
- Typing notifications. - Typing notifications.
- Username auto-completion. - Username auto-completion.
- Message & mention notifications. - Message & mention notifications.
@ -61,7 +63,7 @@ sudo dnf install nheko
#### Gentoo Linux #### Gentoo Linux
```bash ```bash
sudo layman -a matrix sudo eselect repository enable matrix
sudo emerge -a nheko sudo emerge -a nheko
``` ```
@ -105,6 +107,27 @@ sudo port install nheko
- GCC 7 (tested on Travis CI) - GCC 7 (tested on Travis CI)
- MSVC 19.13 (tested on AppVeyor) - MSVC 19.13 (tested on AppVeyor)
Nheko can use bundled version for most of those libraries automatically, if the versions in your distro are too old.
To use them, you can enable the hunter integration by passing `-DHUNTER_ENABLED=ON`.
It is probably wise to link those dependencies statically by passing `-DBUILD_SHARED_LIBS=OFF`
You can select which bundled dependencies you want to use py passing various `-DUSE_BUNDLED_*` flags. By default all dependencies are bundled *if* you enable hunter.
The bundle flags are currently:
- USE_BUNDLED_BOOST
- USE_BUNDLED_SPDLOG
- USE_BUNDLED_OLM
- USE_BUNDLED_GTEST
- USE_BUNDLED_CMARK
- USE_BUNDLED_JSON
- USE_BUNDLED_OPENSSL
- USE_BUNDLED_MTXCLIENT
- USE_BUNDLED_SODIUM
- USE_BUNDLED_ZLIB
- USE_BUNDLED_LMDB
- USE_BUNDLED_LMDBXX
- USE_BUNDLED_TWEENY
#### Linux #### Linux
If you don't want to install any external dependencies, you can generate an AppImage locally using docker. If you don't want to install any external dependencies, you can generate an AppImage locally using docker.
@ -145,6 +168,17 @@ sudo apt-get update
sudo apt-get install -y g++-7 qt59base qt59svg qt59tools qt59multimedia cmake liblmdb-dev libsodium-dev sudo apt-get install -y g++-7 qt59base qt59svg qt59tools qt59multimedia cmake liblmdb-dev libsodium-dev
``` ```
##### Debian Buster (or higher probably)
(User report, not sure if all of those are needed)
```bash
sudo apt install cmake gcc make automake liblmdb-dev libsodium-dev \
qt5-default libssl-dev libqt5multimedia5-plugins libqt5multimediagsttools5 libqt5multimediaquick5 libqt5svg5-dev \
qml-module-qtgstreamer qtmultimedia5-dev qtquickcontrols2-5-dev qttools5-dev qttools5-dev-tools \
qml-module-qtgraphicaleffects qml-module-qtmultimedia qml-module-qtquick-controls2 qml-module-qtquick-layouts
```
##### macOS (Xcode 10.2 or later) ##### macOS (Xcode 10.2 or later)
```bash ```bash
@ -158,61 +192,29 @@ brew install qt5 lmdb cmake llvm libsodium spdlog boost cmark
(for the CMake integration) workloads. (for the CMake integration) workloads.
2. Download the latest Qt for windows installer and install it somewhere. 2. Download the latest Qt for windows installer and install it somewhere.
Make sure to install the `MSVC 2017 64-bit` toolset for at least Qt 5.9 Make sure to install the `MSVC 2017 64-bit` toolset for at least Qt 5.10
(lower versions does not support VS2017). (lower versions does not support VS2017).
3. Install dependencies with `vcpkg`. You can simply clone it into a subfolder 3. If you don't have openssl installed, you will need to install perl to build it (i.e. Strawberry Perl).
of the root nheko source directory.
```powershell
git clone http:\\github.com\Microsoft\vcpkg
cd vcpkg
.\bootstrap-vcpkg.bat
.\vcpkg install --triplet x64-windows \
boost-asio \
boost-beast \
boost-iostreams \
boost-random \
boost-signals2 \
boost-system \
boost-thread \
cmark \
libsodium \
lmdb \
openssl \
zlib
```
4. Install dependencies not managed by vcpkg. (libolm, libmtxclient, libmatrix_structs)
Inside the project root run the following (replacing the path to vcpkg as necessary).
```bash
cmake -G "Visual Studio 15 2017 Win64" -Hdeps -B.deps
-DCMAKE_TOOLCHAIN_FILE=C:/Users/<your-path>/vcpkg/scripts/buildsystems/vcpkg.cmake
-DUSE_BUNDLED_BOOST=OFF
cmake --build .deps --config Release
cmake --build .deps --config Debug
```
### Building ### Building
First we need to install the rest of the dependencies that are not available in our system We can now build nheko:
```bash ```bash
cmake -Hdeps -B.deps \ cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release
-DUSE_BUNDLED_BOOST=OFF # if we already have boost & spdlog installed.
-DUSE_BUNDLED_SPDLOG=OFF
cmake --build .deps
```
We can now build nheko by pointing it to the path that we installed the dependencies.
```bash
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=.deps/usr
cmake --build build cmake --build build
``` ```
To use bundled dependencies you can use hunter, i.e.:
```bash
cmake -H. -Bbuild -DHUNTER_ENABLED=ON -DCMAKE_BUILD_TYPE=OFF -DUSE_BUNDLED_OPENSSL=OFF
cmake --build build --config Release
```
Adapt the USE_BUNDLED_* as needed.
If the build fails with the following error If the build fails with the following error
``` ```
Could not find a package configuration file provided by "Qt5Widgets" with Could not find a package configuration file provided by "Qt5Widgets" with
@ -237,13 +239,14 @@ The `nheko` binary will be located in the `build` directory.
After installing all dependencies, you need to edit the `CMakeSettings.json` to After installing all dependencies, you need to edit the `CMakeSettings.json` to
be able to load and compile nheko within Visual Studio. be able to load and compile nheko within Visual Studio.
You need to fill out the paths for the `CMAKE_TOOLCHAIN_FILE` and the `Qt5_DIR`. You need to fill out the paths for the `Qt5_DIR`.
The toolchain file should point to the `vcpkg.cmake` and the Qt5 dir to the `lib\cmake\Qt5` dir. The Qt5 dir should point to the `lib\cmake\Qt5` dir.
Examples for the paths are: Examples for the paths are:
- `C:\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake`
- `C:\\Qt\\5.10.1\\msvc2017_64\\lib\\cmake\\Qt5` - `C:\\Qt\\5.10.1\\msvc2017_64\\lib\\cmake\\Qt5`
You should also enable hunter by setting `HUNTER_ENABLED` to `ON` and `BUILD_SHARED_LIBS` to `OFF`.
Now right click into the root nheko source directory and choose `Open in Visual Studio`. Now right click into the root nheko source directory and choose `Open in Visual Studio`.
You can choose the build type Release and Debug in the top toolbar. You can choose the build type Release and Debug in the top toolbar.
After a successful CMake generation you can select the `nheko.exe` as the run target. After a successful CMake generation you can select the `nheko.exe` as the run target.
@ -261,6 +264,9 @@ windeployqt nheko.exe
The final binary will be located inside `build-vc\Release\Release` for the Release build The final binary will be located inside `build-vc\Release\Release` for the Release build
and `build-vc\Debug\Debug` for the Debug build. and `build-vc\Debug\Debug` for the Debug build.
Also copy the respective cmark.dll to the binary dir from `build/cmark-build/src/Release` (or Debug).
### Contributing ### Contributing
See [CONTRIBUTING](.github/CONTRIBUTING.md) See [CONTRIBUTING](.github/CONTRIBUTING.md)