加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 为什么在重建工程之后,源代码的更改始终不会反映在机器代码

发布时间:2020-12-16 05:39:13 所属栏目:百科 来源:网络整理
导读:有时,当我在Qt项目中更改代码(Qt Creator 2.1.0 with mingw32)时,修改后的生成的机器代码就不会反映出这些变化.这主要发生在我更改构造函数中的默认值或方法/构造函数中的参数顺序时.通常,完全重建修复(但需要几分钟). 在建立之前,我正在帮助自己删除生成的
有时,当我在Qt项目中更改代码(Qt Creator 2.1.0 with mingw32)时,修改后的生成的机器代码就不会反映出这些变化.这主要发生在我更改构造函数中的默认值或方法/构造函数中的参数顺序时.通常,完全重建修复(但需要几分钟).

在建立之前,我正在帮助自己删除生成的可执行文件或库,这似乎大部分时间都是有帮助的.这是否意味着链接目标文件时出现问题?

我来自java / .net,我习惯了一种不同的行为.如果有人可以向我解释我在做错什么和/或指出一些相关的文章,我会很高兴.

谢谢!

解决方法

通常,在头文件更改后,应重新构建包含该头文件的所有源文件.
但是,qmake在这方面有点特别,您需要为当前目录以外的其他文件夹设置DEPENDPATH.例如,如果有的话
INCLUDEPATH += somepath_in_my_project

还加了

DEPENDPATH += some_path_in_my_project

只有使用DEPENDPATH,如果some_path_in_my_project中的某些标题更改(如果它们包含该标题),则重建由.pro文件构建的文件!

我建议为每个INCLUDEPATH行添加相同的DEPENDPATH行,除非您包含一些不希望更改的系统目录.

编辑:

当与qmake静态链接时,存在类似的问题:如果静态lib foo.a发生更改,则与它的二进制链接不会重新链接.这是QMake中的错误,不会生成正确的依赖关系.

我在前一个项目中找到的解决方法:

static:unix:TARGETDEPS += path_to_my/somestaticlib.a
static:win32:TARGETDEPS += path_to_my/somestaticlib.lib

编辑编辑:

自从有一段时间(Qt 5?),上面的代码应该使用POST_TARGETDEPS而不是TARGETDEPS.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读