再补充两个:
cmake 的作者可能以前是 qmake 用户,所以 cmake 的语法跟 qmake 差不多,非常之烂。后来 KDE 的支持可能又增强了这个影响。如果没有 KDE,说不定 cmake 就不会发展起来。对比 KDE 的另外一个重大贡献,khtml,也就是 webkit/chrome 的前身,它支持的这个 cmake 真是太讨人嫌了。gtk/gnome 支持的 meson 个人感觉比较好看。
Qt5 以后,因为 C++ 的进步,已经可以不用 moc 预编译了。连接 signal/slot 可以这样写:
connect(button, &QPushButton::clicked, this, &MainWindow::sayHello);
或者这样写:
connect(button, &QPushButton::clicked, [this] {
sayHello();
});
【 在 hgoldfish (老鱼) 的大作中提到: 】
: Qt 要兼容各种平台,有时候要处理特定操作系统/编译器版本的 BUG,所以做了一个 mkspecs 目录,里面有个头文件定义。编译 Qt 之前需要先运行 configure 脚本探测选用一个 mkspecs. 所以要扣出 Qt 的源代码,mkspecs 目录的 qplatformdef.h 记得带上。
: 你说的奇怪的东西可能是 qmake,这是一个脚本构建工具。vc 的工程文件是 IDE 定义的,通过 IDE 来修改,不方便做脚本自动化——比如,根据外部环境决定哪个文件要编译哪个文件不要编译。以前用 automake,或者手写 configure + makefile,有了 qmake 就简单多了,只要学
: qmake 还有另外一个用途是自动执行 rcc, moc, uic 这些 Qt 的预编译工具。所谓预编译就是把源代码在交给编译器之前,往里面添加自动生成的代码。Qt 需要分析 C++ 的类,把类有哪些方法,每个方法有什么参数这些数据也一起写到 C++ 源代码里面,方便调用——类似于 java
: ...................
--
FROM 183.253.23.*