写了一个Seafile Window客户端编译的教程


#1

由于Seafile官方的文档包含Windows客户端的编译,我写了一个编译的教程。
采用了交叉编译的环境,因此可以一个Makefile编译两个平台的客户端,理论上也可以编译MacOS的客户端,可是我并没有MacOS系统,于是没有支持。

编译完整步骤放在了我的博客:
http://ilovecpp.com/2018/06/25/seafile-compile/

希望能够对想学习seafile源码的你,有所帮助。我只测试了fedora平台,如果你编译出现了任何问题,欢迎给我留言。


#2

感谢你的付出,我正在点滴学习


#3

你好,按照你的方法在centOS上编译windows客户端,出现大量的下面错误,请问你那边遇到过吗,谢谢
/usr/i686-w64-mingw32/sys-root/mingw/include/c++/istream:179:7: error: ‘std::basic_istream<_CharT, _Traits>::__istream_type& std::basic_istream<_CharT, _Traits>::operator>>(int&)’ cannot be overloaded

/usr/i686-w64-mingw32/sys-root/mingw/include/qt5/QtCore/qtypetraits.h:230:19: error: redefinition of ‘struct QtPrivate::is_integral’
template<> struct is_integral : true_type { };
/usr/i686-w64-mingw32/sys-root/mingw/include/qt5/QtCore/qdatastream.h:144:18: error: ‘QDataStream& QDataStream::operator>>(int&)’ cannot be overloaded
QDataStream &operator>>(bool &i);


#5

还是用fedora吧,centos上的yum资源太老,除非你自己找rpm包,用fedora省事儿多了


#7

当前正在生成的是searpc-async-client.exe,应该是searpc的一个使用demo,如果你不使用的话,没影响。如果你想尝试的话,
对照libtool官网看一下吧
https://www.gnu.org/software/libtool/manual/html_node/File-Name-Conversion-Failure.html

另外,msi是windows上打包的工具,不知道有没有交叉编译的版本,你可以查查msdn,或者在windows进行打包。我知道一个Linux上支持交叉编译的打包工具:mingw32-nsis,包管理器就能找到。不过你还要学习nsis脚本的编写。

自己用的话还是手动的把这些依赖的dll从编译环境上拷贝下来,最方便省事儿。


#10

请教下,按照文档已成功编译出seafile-applet.exe,但运行时,Window任务栏没有托盘图标,图标没有显示,但位置是空出来的,可以鼠标点击进行相关操作,请问可能是什么原因呢,谢谢!


#11

把编译环境上的imageformats目录里边的dll(保留目录),一并拷贝下来


#13

你好,我想学习一下linux和windows编译,看到了您已经编译了,但是在下载您那个脚本,发现链接打不开了,可以在这里更新一下吗?


#14

您好,可以给我发一份楼主的那个Makefile吗?我在看他的博客,还是不知道怎么编译。。


#15

最近比较忙,没有看这个论坛,有问题,你可以直接在我博客里边留言的,会有邮件通知的。makefile:https://gist.githubusercontent.com/baixiangcpp/201aa6f32b14ae89cf70acd143274b7d/raw/877d04c1cb95c76531f09d2943b6957387ff3da2/Makefile


#16

编译环境上的 dll 全部拷贝下来,像这样的结构


#18

应该可以留的
脚本在这里:https://gist.github.com/baixiangcpp/7e10afee74e25c0bc738ad2e8d1f3d4a


#19

感谢回复,已经编译出文件,拷贝了编译环境上的 dll 文件,在打开客户端时候根据缺少的dll相关提示同时拷贝了相关的dll文件后打开seafile客户端提示如下图所示不知是什么原因?


#20

使用 https://github.com/lucasg/Dependencies/releases 这个工具看一下,缺什么dll,就从编译环境拷贝什么dll,额外需要把Qt里边的"platforms" "imageformats"保留目录拷贝到同一个路径


#21

感谢回复,已经成功编译,问个问题怎样修改参数更改生成客户端的名称以及直接把默认的企业名称seafile也更改呢,默认是seafile,如果编译MacOS的话更改哪个参数呢谢谢
1


#22

请问 windows版 客户端 源码在哪里能下载呢