C++ 代码更改不会生效
我刚开始在Kubuntu 15.10上使用QtCreator 3.5.0、Qt5.4.2和GCC。我创建了一个新项目,添加了一个窗口,目前我正在尝试开发一个新模块 不管发生多么奇怪的事情 我在模板类X中编写了一个调试输出行。该行位于其模块头中类X的函数中,例如:C++ 代码更改不会生效,c++,qt,compilation,qt-creator,build-process,C++,Qt,Compilation,Qt Creator,Build Process,我刚开始在Kubuntu 15.10上使用QtCreator 3.5.0、Qt5.4.2和GCC。我创建了一个新项目,添加了一个窗口,目前我正在尝试开发一个新模块 不管发生多么奇怪的事情 我在模板类X中编写了一个调试输出行。该行位于其模块头中类X的函数中,例如: qDebug() << "Hello1" << endl; qDebug()检查调试器实际运行的exe。它可能是另一个副本!查看进程列表以确定调试器下有哪些EXE 在我个人的经历中,这个普遍的问题是由于各种原因
qDebug() << "Hello1" << endl;
qDebug()检查调试器实际运行的exe。它可能是另一个副本!查看进程列表以确定调试器下有哪些EXE
在我个人的经历中,这个普遍的问题是由于各种原因发生的。将文件复制到安装/暂存区域;环境遮蔽了事物;错误的项目设置为“启动”;启动调试会话时组件的运行方式最终解析为错误的文件;正在更改错误的配置或味道;等等
规则1:验证你的假设。您检查了文件日期等,但还检查了调试器下实际存在的文件(完整路径)。检查调试器实际运行的exe。它可能是另一个副本!查看进程列表以确定调试器下有哪些EXE
在我个人的经历中,这个普遍的问题是由于各种原因发生的。将文件复制到安装/暂存区域;环境遮蔽了事物;错误的项目设置为“启动”;启动调试会话时组件的运行方式最终解析为错误的文件;正在更改错误的配置或味道;等等
规则1:验证你的假设。您检查了文件日期等,但还检查了调试器下实际存在的文件(完整路径)。您可以尝试以下操作:
检查您打开的exe文件是否与创建的exe文件在同一路径上(您可以通过查看.pro.user文件进行验证)
检查编译时,它是否先保存更改,然后将其编译在一起,否则它可能看起来会保存更改,但不会
如果更改了.pro文件,请运行qmake并重新构建它
尝试清理、运行qmake并重新构建项目
如果您更改了.pro文件或包含了外部lib或文件,请检查输出日志以查看是否一切正常,有时不是,但仍会编译(然后链接不好或只允许您使用旧的编译版本)
它似乎是在编译代码的最后一个“版本”,而不是出于某些原因和其他原因而应用更改(如果我考虑到其他方面,我将稍后编辑此文章)
希望对您有所帮助您可以尝试一些东西:
检查您打开的exe文件是否与创建的exe文件在同一路径上(您可以通过查看.pro.user文件进行验证)
检查编译时,它是否先保存更改,然后将其编译在一起,否则它可能看起来会保存更改,但不会
如果更改了.pro文件,请运行qmake并重新构建它
尝试清理、运行qmake并重新构建项目
如果您更改了.pro文件或包含了外部lib或文件,请检查输出日志以查看是否一切正常,有时不是,但仍会编译(然后链接不好或只允许您使用旧的编译版本)
它似乎是在编译代码的最后一个“版本”,而不是出于某些原因和其他原因而应用更改(如果我考虑到其他方面,我将稍后编辑此文章)
希望它有帮助我也遇到过这个问题。我可以通过清理(在我的例子中,运行catkinclean
)然后重新构建(catkin\u make
)来解决它
不幸的是,我还没能找出问题的确切原因,但希望有更了解情况的人有一个想法
此外,我的开发环境不同(Ubuntu 14.04、Qmake 3.1、Qt 5.9.1、gcc 4.8.4、catkin tools 0.4.4、Qt Creator等),因此显然我的修复程序可能不适用于所有人。我也遇到过这个问题。我能够通过清理(在我的情况下运行catkin clean
)然后重新构建它来解决这个问题(柳絮制作
)
不幸的是,我还没能找出问题的确切原因,但希望有更了解情况的人有一个想法
此外,我的开发环境也不同(Ubuntu 14.04、Qmake 3.1、Qt 5.9.1、gcc 4.8.4、catkin tools 0.4.4、Qt Creator等)因此,显然我的修复程序可能不适用于所有人。修改main.cpp并重新编译这应该会更新您的代码。不确定为什么会发生这种情况,但我添加了一个cout修改main.cpp并重新编译这应该会更新您的代码。不确定为什么会发生这种情况,但我添加了一个cout问题仍然存在于Qt 5.8:
Qt5.8使用clang,在QtCreator中的OSX下为OSX构建64位,这一问题仍然存在,因此这不是GCC问题
解决方案:
我能够通过以下方式使相关编译器正确响应对新添加头文件的更改:
- 清理项目
- 运行QMake
- 重建整个项目
检查:
在执行上述操作之前,我检查了项目文件,并确保新文件列在标题部分(它是)。尽管如此,Qt不会重建包含.h
文件的文件。问题在Qt 5.8下仍然存在:
Qt5.8使用clang,在QtCreator中的OSX下为OSX构建64位,这一问题仍然存在,因此这不是GCC问题
解决方案:
我能够通过以下方式使相关编译器正确响应对新添加头文件的更改:
- 清理项目
- 运行QMake
- 重建整个项目
检查:
在执行上述操作之前,我检查