1

大家好。

我使用了 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 Setup Wizard 中,我选择了 Qt 5.11.0 和 MinGW 4.9.1 进行安装。
  3. 在我的 PATH 变量中,我添加了 C:\...\Qt\5.11.0

制作

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

兹库

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

Qt钥匙串

  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 等

吉特

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

视觉工作室

  1. 我安装了带有 C++ 包和以下附加组件的 VS 2017 社区版: Visual C++ Tools for CMake Windows 10 SDK for UWP C++(不确定是否仅此而已)

创建 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 *)”(?BIO2ByteArray@?A0xd4adced4@OCC@@ya?AVQByteArray) 中引用的未解析外部符号“BIO_read” @@PEAUbio_st@@@z)"。[C:\Nextcloud_64\desktop\cmake\src\libsync\nextcloudsync.vcxproj]

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

我不确定这个问题是来自 OpenSLL 还是 QtKeychain。我是否错过了复制或以某种方式连接?

谁能告诉我帽子是否正确,以及是否有任何方法可以让客户端构建?

非常感谢您提前

4

1 回答 1

2

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

我们现在有一个带有 Windows 构建脚本的官方存储库,用于创建日常构建以及我们的发布构建:

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

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

关于 Windows:好的提示@mn_dc466 :) 一旦您第一次设法构建客户端,只需打开构建文件夹中的 Visual Studio 解决方案文件,您就可以使用您的修改重新构建和调试,而无需完全重新构建整个项目。

于 2019-12-02T14:19:19.830 回答