Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QT不';除非重建整个项目,否则不会显示以前的生成警告_Qt_Build_Warnings - Fatal编程技术网

QT不';除非重建整个项目,否则不会显示以前的生成警告

QT不';除非重建整个项目,否则不会显示以前的生成警告,qt,build,warnings,Qt,Build,Warnings,我不确定这是否是IDE的标准行为,但我个人觉得这很烦人。如果一个文件在生成时产生警告(未使用的变量、不匹配的整数/长度等),那么如果修改另一个文件并单击“生成项目”按钮,这些警告将停止显示。继续显示与未修改代码相关的警告是否更有意义?有没有办法强制这种行为?编译器发出警告时会显示警告——不幸的是,这是VS团队(至少到2008年)和Qt Creator团队做出的设计决定 这似乎是一种标准行为,我不知道有什么方法可以替代它。在QtCreator中修复应该很容易,但在VisualStudio中可能很难

我不确定这是否是IDE的标准行为,但我个人觉得这很烦人。如果一个文件在生成时产生警告(未使用的变量、不匹配的整数/长度等),那么如果修改另一个文件并单击“生成项目”按钮,这些警告将停止显示。继续显示与未修改代码相关的警告是否更有意义?有没有办法强制这种行为?

编译器发出警告时会显示警告——不幸的是,这是VS团队(至少到2008年)和Qt Creator团队做出的设计决定

这似乎是一种标准行为,我不知道有什么方法可以替代它。在QtCreator中修复应该很容易,但在VisualStudio中可能很难修复,除非存在相关的API。对于VS,您需要编写一个外接程序,并且需要一个API,该API允许您对错误列表和构建过程进行读写访问。如果存在这样的API,那么这也是一件简单的事情。

这是“标准行为”,更具体地说,行为是构建系统在地球上“被设计为如何行为”的属性

正如@Kuba所指出的,警告是由编译器发出的。它们不会被存储(除了在构建操作的“所有错误/警告日志”中,IDE通常不会为将来的构建操作回读和摘录这些日志,这将获得它们自己的新警告/错误日志)。因此,除非编译器实际再次编译文件,否则不会再次看到警告,这是因为新的生成操作会再次生成新的警告

为了得到您想要的(一个聪明的想法,IMHO),构建系统需要:

  • 存储来自每个文件编译的警告(可能是“基于每个文件”)
  • 每次“使用”文件输出产品时,都会调用/显示这些警告
非常聪明。我不知道有哪个系统能做到这一点。这需要对构建产品进行相当重要的IDE或构建工具级别的管理,依我看,它们都做得不好(但有些比其他好)

今年是2012年,我们不仅错过了飞车,而且还错过了只需/快速构建所需的、可轻松处理不同配置的全内核的构建系统。到目前为止,这两种情况都在意料之中


然后,在那之后的某个时候,你可能会得到你的功能。这将是一个额外的好处,因为这样你就可以在你的飞行汽车中使用它。

正如我所说,构建系统不需要做任何事情——IDE需要做。这也是对IDE的简单修改。我估计最多有几百行。@Kuba,这是构建系统或IDE。IDE是构建系统的代理。不确定可能是几百行--我们需要一个数据库来存储从构建文件和配置散列的消息,以及一个聪明的算法来决定何时/如何“查找”,因为我们可以将调试/发布产品混合到一个EXE中,为同一个EXE的中间版本提供不同的编译设置,一些警告取决于包含/使用的内容,尤其是所有模板内容。不过,60/40或70/30解决方案可能既便宜又有用。所有IDE都有这样一个“数据库”。我确信在QtCreator和VisualStudio中,都有一个模型类使用解析的消息,并且有一个视图显示它们。该视图在VS中命名为“错误列表”,在Qt Creator中命名为“问题”。现在,模型在重建时被清除,这就是必须更改的内容——只有当有新消息表明文件已生成时,才需要为每个文件清除模型。你几乎让我把这个添加到Qt Creator中,只是为了显示它相当简单。