在Win10上编译Owncloud Client
1. 准备编译环境
1.1 下载owncloud源代码
https://download.owncloud.com/desktop/ownCloud/stable/2.7.6.3261/source/ownCloud-2.7.6.3261.tar.xz
1.2 安装QT5.12.9
Owncloud-client 官方编译使用QT5.12.4,使用QT5.12.9也没有问题。下载并安装https://download.qt.io/official_releases/qt/5.12/5.12.9/qt-opensource-windows-x86-5.12.9.exe。
1.3 安装CMake
下载并安装https://github.com/Kitware/CMake/releases/download/v3.19.5/cmake-3.19.5-win64-x64.msi。
1.4 安装MSYS2及开发工具包
为了编译出icoutil(1.7)安装MSYS2。
- 下载并安装 https://repo.msys2.org/distrib/x86_64/msys2-x86_64-20210228.exe。 默认安装路径为C:\msys64
- 编辑C:/msys64/etc/pacman.d/mirrorlist.mingw32, 将“Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/” 添加为Server列表首项。
- 编辑C:/msys64/etc/pacman.d/mirrorlist.mingw64, 将“Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64/” 添加为Server列表首项。
- 编辑C:/msys64/etc/pacman.d/mirrorlist.msys, 将“Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch/” 添加为Server列表首项。
- 进入MSYS2 控制台
- 更新安装包信息
pacman –Sy
- 安装基本开发工具
pacman -S --needed base-devel mingw-w64-x86_64-toolchain
- 安装libpng和gcc
pacman -S mingw-w64-x86_64-libpng gcc
1.5 安装Win64OpenSSL
下载并安装http://slproweb.com/download/Win64OpenSSL-1_1_1j.msi。
默认安装路径是C:\Program Files\OpenSSL-Win64\bin, 将其加入环境变量 PATH(系统路径)
1.6 编译qtkeychain 0.12
1. 下载https://github.com/frankosterfeld/qtkeychain/archive/v0.12.0.zip
2. 将v0.12.0.zip解压到X:\work\qtkeychain-0.12.0\目录下,X可以是任意有效盘符
3. 打开QT-minGW32 shell
4. 执行下面指令完成编译及配置,此处X:\work目录应与后面的OC_PATH值保持一致。
X:
set KEYCHAIN_PATH=X:\work\tool\qtkeychain-0.12.0
cd %KEYCHAIN_PATH%
set PATH=C:\Program Files\OpenSSL-Win64\bin;%PATH%
mkdir x86_build
cd x86_build
cmake -G "MinGW Makefiles" ..
mingw32-make
cd \work
md bin
copy “%KEYCHAIN_PATH%\x86_build\libqt5keychain.dll” bin\
md lib
copy “%KEYCHAIN_PATH%\x86_build\libqt5keychain.dll.a” lib\
md include
copy “%KEYCHAIN_PATH%\x86_build\CMakeFiles\Export\lib\cmake\Qt5Keychain\*.cmake” “%KEYCHAIN_PATH%\x86_build\
1.7 编译icoutils
Icoutils只能在Linux环境下可以编译 ,它依赖的Linux gnu C环境使得移植到VisualStudio下非常困难。好在MSYS2可以在windows环境中将这种开源软件编译成exe执行文件。
- 进入MSYS2 控制台
- 下载,解压,编译icoutils-0.32.3
cd /home/tony
wget http://savannah.nongnu.org/download/icoutils/icoutils-0.32.3.tar.bz2
tar xf icoutils-0.32.3.tar.bz2
cd icoutils-0.32.3
./configure
make
将 C:\msys64\usr\bin\msys-z.dll 和 C:\msys64\home\Tony\icoutils-0.32.3\icotool\icotool.exe 复制到 X:/work/tool/下备用
1.8 准备libpng库文件
- 下载mingw-w64-i686-cmocka-1.1.5-1-any.pkg.tar.xz,解压到 X:\work\lib目录下,并将目录mingw32改名为cmocka-1.1.5
https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686/mingw-w64-i686-cmocka-1.1.5-1-any.pkg.tar.xz
-
下载mingw-w64-cross-zlib-1.2.11-1-i686.pkg.tar.xz,解压目录\opt\i686-w64-mingw32到 X:\work\lib目录下,并将目录i686-w64-mingw32改名为zlib-1.2.11
http://repo.msys2.org/msys/i686/mingw-w64-cross-zlib-1.2.11-1-i686.pkg.tar.xz
-
下载mingw-w64-x86_64-sqlite3-3.31.1-1-any.pkg.tar.xz,解压到 X:\work\lib目录下,并将目录mingw32改名为sqlite3-3.31.1
http://repo.msys2.org/mingw/i686/mingw-w64-i686-sqlite3-3.31.1-1-any.pkg.tar.xz
2. 编译owncloud
- 解压 ownCloud-2.7.6.3261.tar.xz 到 X:/work/ownCloud-2.7.6.3261
- 打开QT-minGW32 shell
- 执行以下指令
set PATH=X:/work/tool/qtkeychain-0.12.0/x86_build;%PATH%
set OC_PATH=X:/work
md "%OC_PATH%/client-build"
cd "%OC_PATH%/client-build"
cmake -G "MinGW Makefiles" %OC_PATH%/ownCloud-2.7.6.3261 -DZLIB_LIBRARY=%OC_PATH%/lib/zlib-1.2.5/bin/zlib1.dll -DZLIB_INCLUDE_DIR=%OC_PATH%/lib/zlib-1.2.5/include -DSQLite3_LIBRARY=%OC_PATH%/lib/sqlite-3.34.1/sqlite3.dll -DSQLite3_INCLUDE_DIR=%OC_PATH%/lib/sqlite-3.34.1/include -DCMOCKA_LIBRARIES=%OC_PATH%/lib/cmocka-1.1.5/bin/libcmocka.dll -DCMOCKA_INCLUDE_DIR=%OC_PATH%/lib/cmocka-1.1.5/include -D Qt5Keychain_DIR=%OC_PATH%/tool/qtkeychain-0.12.0/x86_build -DIcoTool_EXECUTABLE=%OC_PATH%/tool/icotool.exe
mingw32-make