为什么要弄这个东西? 1来我要学学QT, 2来Fterm太不好用了尤其e文的系统到处乱码还不如自己编译一个来玩.
本文假定你用的编译器是vs2003, vs2005会有不可知的问题..嗯.
QTerm依赖qt(qt GUI支持, 废话), openssl(ssh支持), python(python脚本支持)这3个库, 所以要编译QTerm, 首先要编译这3个库.
1.
openssl的编译:
这个是最简单的了, 我用的是
0.98g版. 0.98h似乎vs2005编译有点问题, 不敢用. 然后看文档吧, 源码包下有一个install.w32文件, 会教你怎么编译的. 或者看
这里的中文版.
搞定后把include, dll, lib全部提出来.
2.
python的编译:
选的是
2.4.5版, 因为官方的qterm4win32用的是2.4.x, 避免不必要的兼容性麻烦.
依然是看文档, /PCbuild/readme.txt文件, 其实都是废话. 假设你已经打开了那个叫做pcbuild.sln的solution文件. 我们要编译的只有一个叫做pythoncore的project, 这是一个dll. 编译应该能直接过, 但是对于vs2005来说, 这里有一个bug:
http://bugs.python.org/issue1350409. 上面提供了一个patch, 不过似乎没有backport到2.4.x stream=.=... 个么手动改吧皑皑.
搞定后吧include, dll, lib全部提出来. 然后把/PC/pyconfig.h也复制到include目录, 编译qterm时会有用的.
3.
qt的编译:
这个东西的版本非常的重要.
先来说说opensource版. qt3.3.x系列的opensource版普遍有字体显示问题, 尤其是中文字体.
3.3.4稍微好了一点, 似乎算一个special build, 估计是TrollTech的人亲自参与了吧. diff一下3.3.4和3.3.5的代码会发现, 这两个版本的代码差异不是一点点, 无语的是入口函数的signature变了, 以至link到3.3.4的qt的程序, 换一个3.3.5的dll就不认了. 具体可以查看/src/kernel/qtmain_win.cpp, /src/kernel/qapplication_win.cpp. 所以对于break changes的build, 我还是不用了.
然后是commercial版. 官方支持的自然要好很多, 字体问题几乎是没有的. 安装程序和license电驴上都有, 不过目前非常的难找就是了shy. 安装过程非常的简单, 不过最好先开个包含vs2003的cmd, 然后运行安装文件, 不然会提示找不到vs200x路径. 建议只build release版本就可以了, 如果再build debug版的话, release版会被覆盖... 囧..... 而qt4是不会出现这种情况的.
整个build过程大概15min左右还是比较快的(P4 2.6c HT, 512M的机器). 搞定后把生成的obj文件删掉减少磁盘占用.
诶.. 难道一定要用commercial版才能让qterm正确编译并运行么? 不是的.. 你可以用opensource版编译(建议3.3.4以上版本), 然后发布的时候替换opensource的为commercial版的qt dll. 关于commercial的dll, 其实很多程序都包括的, qterm官方发布的唯一一个windows版本里就有一个qt-mt334.dll. 不过qterm很无耻的用的就是commercial版, 并不是替换的策略.
反正一句话, 方便一点就直接用commercial版吧=v=.
4.
qterm的编译:
选的是
0.4.1版. 我要骂人了, qterm的代码实在写的有点恶心. 0.4.0版的prj文件错误一堆, 主要是少文件, 很多文件. 0.4.1版好了很多, 不过还是少, 还有一些编译error, 一些很低级的warning, 看changelog会发现, 最长的一次更新之间用了1年还多...==b. 0.5.x版更nb了.. 代码跟0.4.x完全不像了, 编译采用cmake控制, 不知道什么东西. 好了.. 现在丸子sensei开始讲解怎么改qterm的代码:
*) 找到/qterm/qterm.prj文件, 打开.
*) 找到 win32:INCLUDEPATH, win32:LIBS 这两行, 改成你自己openssl和python的路径.
*) 找到SOURCE这一块, 加1个文件: ssh/getput.cpp
*) 找到/qterm/ssh/types.h, 加一行: typedef Q_UINT16 u_int16_t;
*) 找到/qterm/trayicon_win.cpp, 最前面加一行: #include <windows.h>
ok了.. 运行cmd到/qterm目录, 再运行: qmake -t vcapp qterm.prj 这样就生成了一个.vcproj的项目文件, 然后自己用vs200x爽去吧.
这里对于不同的qt库, qterm的运行可能会不一样, 一下是一些测试:
| qt link version |
qt change dll version |
run |
font |
style |
3.3.7-free
|
3.3.7-free |
modal dialog cannot move.
|
sometimes too small and cannot changed. |
ok, but ugly. |
| 3.3.7-free |
3.3.4-commercial
|
ok |
too large, changeable. |
ok, windows style added. |
| 3.3.7-free |
3.3.4-commercial-self |
ok |
same as above. |
ok, windows(xp) style added. |
| 3.3.7-free |
3.3.8-commercial |
failed |
x
|
x |
| 3.3.4-commercial |
3.3.4-commercial-self |
ok |
same as row 3.
|
same as row 3. |
| 3.3.4-commercial |
3.3.8-commercial
|
failed |
x |
x |
jz.. 等下传一个vs2003编译好的qt0.4.1上来.