【问题标题】:QtCreator does not run qmake automatically when adding classQtCreator 在添加类时不会自动运行 qmake
【发布时间】:2015-07-24 21:17:02
【问题描述】:

我在 Windows7 64 位上使用 QtCreator 3.4.2(开源)和 Visual Studio 2013 套件。我正在使用 Qt 5.5。

在一个项目中,当我通过右键单击项目并选择Add New...->C++ Class来添加一个类时,qmake不会自动运行,我必须使用Build菜单手动调用它。

如何配置 QtCreator,以便每次需要时自动调用 qmake?

【问题讨论】:

  • 好的,我现在看到了问题。它适用于 Qt 4,但不适用于 Qt 5,这是一个错误,但我不知道是 Qt Creator 错误还是 Qt 错误。
  • 有没有存放 Qt creator 日志的地方,以便检查是否有问题?
  • 没有任何问题。请注意,“配置不变,跳过 qmake 步骤”是一个红鲱鱼。无论如何,它总是显示出来。它在使用 Qt 4 编译时显示,一切正常。
  • 可能是一个 qtcreator 错误。因为它应该在需要时调用 qmake。如果我调用 qmake 那么项目会正确更新。
  • 再一次,请忘记Qt Creator。 Qt Creator的逻辑如下:Makefile不存在?运行 qmake。最后,运行 jom 或 nmake。而已。每当.pro 文件更改时,jomnmake 都应该重新生成makefile。您可以通过在构建文件夹中调用 jomnmake 从命令行重现您的问题 - 就像您手动构建项目一样。

标签: qt qt-creator qmake nmake


【解决方案1】:

您不需要手动调用它,make 工具会为您完成(nmakejom,取决于您使用的内容 - 当然您应该使用 jom)。不过,我将简单地将 make 工具称为 nmake

nmake 生成的Makefile 本身具有依赖于.pro 文件的Makefile。每当您构建项目时,nmake 将作用于此依赖项,qmake 将运行,Makefile 将由nmake 重新生成和重新加载,因此考虑到对.pro 文件的任何更改。

这是由qmakenmake 自己处理的,Qt Creator 不需要在这里做任何事情来实现它。

为了测试,Ctrl-B 构建项目,确保Compile Output 窗口是标称的并且构建成功。然后在.pro 文件的开头添加一个空格,然后再次按Ctrl-B。编译输出应该显示调用了qmake 来重新生成Makefile,并且没有其他文件被重新编译(在这种情况下是正确的)。

【讨论】:

  • 实际上,我认为@Jepessen 的问题是 qmake 在按 Ctrl-B 时确实 not 运行(正确)。就我而言,当我更新并保存 .pro 文件并在 Qt Creator (3.4.2) 中按 Ctrl-B 时,编译输出显示“配置未更改,跳过 qmake 步骤”。所以问题仍然存在,我如何告诉 Qt Creator not 在 .pro 文件更新时跳过 qmake 步骤。
  • 确实如此。当我通过右键单击项目->添加新->类来添加一个类时,我必须手动重新运行 qmake,因为该类已添加到 qmakefile 中但未调用 qmake,我必须手动执行。跨度>
  • 实际上,虽然据报道跳过了“qmake 步骤”,但在我的情况下它确实运行并生成了一个新的 Makefile(查看时间戳)。但是,由于源代码没有更新, (n)make 没有执行,代码本身也没有使用新的 Makefile 重建。如果我更新 .pro 文件源文件,一切正常。原则上,make 构建任何比它的源更旧的东西 - 恕我直言,如果 Makefile 更新,它应该重建所有......
  • @AstroFloyd “配置未更改”消息来自 Creator,与此无关。 makefile 包含从foo.proMakefile 的依赖关系。它将根据需要重新生成Makefile
  • @AstroFloyd “它确实运行并生成一个新的 Makefile”操作是由 make 完成的,而不是由 Qt Creator 完成的。在 Qt Creator 中构建项目时,总是会执行 make。如果对 makefile 的更改导致输出依赖于较新的源文件,则您的输出将被重建。
猜你喜欢
  • 2012-10-04
  • 2016-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
相关资源
最近更新 更多