我正在开发一个Qt项目,而且当我进行一系列更改和构建时,当我运行程序时,我在Qt框架中的某处出现了随机分段错误。
要解决这个问题,我必须重建然后它就会消失。
我找到了另一个遇到这个问题的人,他们收到了这个答案:
来自:Segmentation fault in Qt application framework
这听起来好像是你的 构建系统无法识别 依赖性和改变 类定义不会触发a 重建应该是的东西 定义时重新编译 变化。
确保类LevelIndicator是 只在一个地方定义 (通常这将是一个头文件 任何模块都包含它 需要使用LevelIndicator对象)。 还要确保任何全局/静态 LevelIndicator对象的实例 遵循一个定义规则。
所以这对我来说很有意义,但每个类只在一个地方定义,#ifndef守卫以防止双重包含。那我怎么能避免这个呢?
答案 0 :(得分:4)
如果更改头文件但通常会发生此类错误,但某些源文件未重建,例如通过向结构/类添加成员。 在这方面,QMake的依赖性处理是特殊的。如果使用INCLUDEPATH变量包含来自其他目录的标头,则还必须将目录添加到DEPENDPATH变量,以使其“受监视”以进行更改。否则,INCLUDEPATH目录中的更改将不会触发当前目录中的重建。它应该是这样的:
INCLUDEPATH += ../somelib/include
DEPENDPATH += ../somelib/include
经验法则:如果你看到一个指向项目内部路径的INCLUDEPATH指令而没有相应的DEPENDPATH指令,那么几乎总是错的。