除非我重建,否则Qt分段错误

时间:2011-04-01 15:13:55

标签: qt segmentation-fault

我正在开发一个Qt项目,而且当我进行一系列更改和构建时,当我运行程序时,我在Qt框架中的某处出现了随机分段错误。

要解决这个问题,我必须重建然后它就会消失。

我找到了另一个遇到这个问题的人,他们收到了这个答案:

来自:Segmentation fault in Qt application framework

  

这听起来好像是你的   构建系统无法识别   依赖性和改变   类定义不会触发a   重建应该是的东西   定义时重新编译   变化。

     

确保类LevelIndicator是   只在一个地方定义   (通常这将是一个头文件   任何模块都包含它   需要使用LevelIndicator对象)。   还要确保任何全局/静态   LevelIndicator对象的实例   遵循一个定义规则。

所以这对我来说很有意义,但每个类只在一个地方定义,#ifndef守卫以防止双重包含。那我怎么能避免这个呢?

1 个答案:

答案 0 :(得分:4)

如果更改头文件但通常会发生此类错误,但某些源文件未重建,例如通过向结构/类添加成员。 在这方面,QMake的依赖性处理是特殊的。如果使用INCLUDEPATH变量包含来自其他目录的标头,则还必须将目录添加到DEPENDPATH变量,以使其“受监视”以进行更改。否则,INCLUDEPATH目录中的更改将不会触发当前目录中的重建。它应该是这样的:

 INCLUDEPATH += ../somelib/include
 DEPENDPATH += ../somelib/include

经验法则:如果你看到一个指向项目内部路径的INCLUDEPATH指令而没有相应的DEPENDPATH指令,那么几乎总是错的。

另见my answer to a similar question