mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-25 20:48:52 +03:00
Update readme with new build instructions
This commit is contained in:
parent
6e3e216156
commit
0d22da6288
1 changed files with 57 additions and 51 deletions
108
README.md
108
README.md
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue