【发布时间】:2016-07-16 21:53:26
【问题描述】:
[更新]
当改变一个特定的源文件时,在构建项目编译需要大约。 10分钟。其他源文件的更改会导致或多或少的即时构建时间。我想如果我将变化最大的部分移到 pimpl 类中,编译时间将不再受到影响。
我不明白为什么会这样。我没有更改类的头文件。标头本身只做#include <QWidget> 并转发声明了10 个类。当更改没有直接包含的源文件时,有什么原因会导致重新编译(在构建目录中我看到所有目标文件都重新生成)?奇怪的是 pimpl 的工作原理...
这是类的标题:
#ifndef EXPLORER_H
#define EXPLORER_H
#include <QWidget>
... here coming 10 forward declared classes ...
class Explorer : public QWidget
{
Q_OBJECT
public:
explicit Explorer(QWidget *parent = 0);
~Explorer();
signals:
...
public slots:
...
private:
ExplorerPrivate *p; // pimpl (QObject)
...pointers to objects of forward declared classes
};
#endif // EXPLORER_H
编辑
使用 QtCreator 3.2.1 构建
在 mingw 中使用 Qt5.3
正如我所说,cpp 文件不包括在内(已搜索)
qmake.exe project.pro -r -spec win32-g++ "CONFIG+=debug"
- 制作:mingw32-make.exe
编译器控制台会不断重复g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -frtti -Wall -Wextra -fexceptions -mthreads [include flags and directories here],最后会出现-o objects\moc_runtimedata.o moc\moc_runtimedata.cpp 或类似的内容。
【问题讨论】:
-
什么IDE/构建系统?此外,水晶球说 .cpp 文件可能会将我
#included 转换为其他地方的另一个 .cpp。 -
代码不只是自发地编译自己。你是如何运行编译器的?
-
"How are you running the compiler" 编辑是否足够清晰?我刚刚安装了 QtCreator,没有更改默认编译器参数。
-
Qt creator 显示每次构建时重新编译了多少文件......你检查过这个数字吗?
-
请问,你在哪里找到那个号码?
标签: c++ qt compile-time moc