Nextcloud桌面客户端构建过程

时间:2018-08-21 13:10:42

标签: c++ qt cmake openssl nextcloud

大家好。

我使用了来自Git的有关如何构建nextcloud客户端的说明:https://github.com/nextcloud/desktop/wiki/How-to-compile-the-desktop-client

我想解释一下我做了什么以及如何使nextcloud客户端运行:

  1. 我使用Windows 10创建了一个新的虚拟机,以为测试提供干净的环境

安装Qt

  1. 我从https://www.qt.io/download-qt-installer?hsCtaTracking=9f6a2170-a938-42df-a8e2-a9f0b1d6cdce%7C6cb0de4f-9bb5-4778-ab02-bfb62735f3e5下载了Qt安装程序
  2. 在“ Qt设置向导”中,我选择了Qt 5.11.0和MinGW 4.9.1进行安装。
  3. 我在PATH变量中添加了C:\ ... \ Qt \ 5.11.0

CMake

  1. 我从https://cmake.org/download/下载了Windows win64-x64安装程序并安装了它
  2. 在我的PATH变量中添加了C:\ ... \ Cmake \ bin

Zlib

  1. 我从https://github.com/maxirmx/Dist_zlib下载了64位版本,并解压缩了文件夹
  2. 我在PATH变量中添加了C:\ ... \ Zlib \ bin和C:\ ... \ Zlib \ lib

QtKeychain

  1. 我从https://github.com/frankosterfeld/qtkeychain.git克隆了存储库,并建立了三个文件:qt5keychain.dll,qt5keychain.exp,qt5keychain.lib
  2. 在我的PATH变量中添加了C:\ ... \ QtKeychain \ Release,其中包含这三个文件

OpenSSL

  1. https://github.com/nextcloud/desktop/wiki/System-requirements-for-compiling-the-desktop-client提供的指向OpenSLL索引的链接不提供任何OpenSSL 1.1.x版本。提供的最新版本是1.0.2。因此,我做了一些搜索,然后从https://slproweb.com/products/Win32OpenSSL.html下载了Win64 OpenSSL v1.1.0i。
  2. 在我的PATH变量中添加了C:\ ... \ OpenSSL-Win64 \ bin,其中包含openssl.exe,libcrypto-1_1-x64.dll,openssl.cfg等

Git

  1. 我从https://git-scm.com/downloads下载了Git安装程序,没有对安装程序进行任何更改并安装了它

Visual Studio

  1. 我安装了带有C ++软件包和以下其他组件的VS 2017社区版: 用于CMake的Visual C ++工具 适用于UWP C ++的Windows 10 SDK (不确定是否全部)

创建nextcloud项目文件

  1. 在Git Bash中,我导航到/ c /.../ nextcloud / desktop /
  2. 我跑: 'mkdir build'
  3. 导航到/ c /.../ nextcloud / desktop / cmake \并运行:
    cmake -G "Visual Studio 15 2017 Win64" .. -DCMAKE_INSTALL_PREFIX=/c/.../nextcloud/desktop/build/ -DQTKEYCHAIN_INCLUDE_DIR=/c/QTKeychain/Release/ -DCMAKE_BUILD_TYPE=Debug -DNO_SHIBBOLETH=1
  4. 完成(没有错误)

构建nextcloud客户端

  1. 在/c/.../nextcloud/desktop/cmake中,我运行:
    cmake --build . --config Debug --target nextcloud

  2. 解决了文件clientsideencryption.cpp和httpcredentials.cpp无法找到keychain.h和qkeychain_export.h的错误,因此我将这两个文件(和keychain.cpp)从QtKeychain存储库复制到了文件所在的位置在desktop / src / libsync下,错误不再出现

  3. 再次运行19.,现在我遇到了50多个错误,例如:
      

    clientsideencryption.obj:错误LNK2019:在函数““类QByteArray __cdecl OCC ::''anonymous namespace':: BIO2ByteArray(struct bio_st *)”中引用的未解析的外部符号“ BIO_read”(?BIO2ByteArray @?A0xd4adced4 @ OCC @@ ya?AVQByteArray @@ PEAUbio_st @@@@ z)“。 [C:\ Nextcloud_64 \ desktop \ cmake \ src \ libsync \ nextcloudsync.vcxproj]

      clientsideencryption.obj:错误LNK2019:在函数““类QByteArray __cdecl OCC :: EncryptionHelper :: privateKeyToPem(class QSslKey)”中引用的未解析的外部符号“ BIO_write”(?privateKeyToPem @ EncryptionHelper @ OCC @@ ya?AVQByteArray @@ VQSsl @z)”。 [C:\ Nextcloud_64 \ desktop \ cmake \ src \ libsync \ nextcloudsync.vcxproj]

我不确定此问题是否来自OpenSLL或QtKeychain。我是否错过了复制或以某种方式连接的东西?

任何人都可以告诉我我做的事情是否正确,以及是否有任何方法可以使客户端构建?

非常感谢您

1 个答案:

答案 0 :(得分:1)

GitHub上的一个问题将我引到了这里。如果有人尝试相同的方法,我想添加一些提示:

我们现在有了一个正式的存储库,其中包含适用于Windows的构建脚本,用于创建日常构建以及发布的构建:

https://github.com/nextcloud/client-building/

如果您不想为Windows构建,可能会在此获得一些有用的提示;-)

关于Windows: 好提示@ mn_dc466 :) 首次尝试构建客户端后,只需打开build文件夹中的Visual Studio解决方案文件,就可以对您的修改进行重建和调试,而不必完全重建整个项目。