Qt 要兼容各种平台,有时候要处理特定操作系统/编译器版本的 BUG,所以做了一个 mkspecs 目录,里面有个头文件定义。编译 Qt 之前需要先运行 configure 脚本探测选用一个 mkspecs. 所以要扣出 Qt 的源代码,mkspecs 目录的 qplatformdef.h 记得带上。
你说的奇怪的东西可能是 qmake,这是一个脚本构建工具。vc 的工程文件是 IDE 定义的,通过 IDE 来修改,不方便做脚本自动化——比如,根据外部环境决定哪个文件要编译哪个文件不要编译。以前用 automake,或者手写 configure + makefile,有了 qmake 就简单多了,只要学会简单的脚本语法写个 if 就能搞定,类似的 boost jam。但渐渐地 qmake 也不够用,它的继任者 cmake 逐渐流行起来,已经在 c/cpp 社区取得统治地位。
qmake 还有另外一个用途是自动执行 rcc, moc, uic 这些 Qt 的预编译工具。所谓预编译就是把源代码在交给编译器之前,往里面添加自动生成的代码。Qt 需要分析 C++ 的类,把类有哪些方法,每个方法有什么参数这些数据也一起写到 C++ 源代码里面,方便调用——类似于 java 的自省。你说的也有可能是这个。到了 Qt5,这部分功能已经是可有可无的。
【 在 Bernstein (Berns) 的大作中提到: 】
: qt的编译貌似搞了一个什么奇怪的东西,十多年前调研的时刻遇到过
--
FROM 183.253.23.*