第一次 在 CSDN 上写博客, 记录一下自己的解决这个问题的过程, 以备后续查看
1.开发环境: VS2013 + QT5.9.0
2.问题描述:
改变 *.ui 的目录结构后,重新编译*.ui ,出现如下警告:
虽然编译成功了,但是并没有生成 ui_DeleteJams.h 文件.
3.解决过程:
作为QT初学者, 出现问题当然先问度娘啦。 不过遗憾的是,并没有能够解决我这个问题的办法, 找了 N久。不过倒是让我想起了 一点: ui_DeleteJams.h 这个文件的路径我更改过,随后把没有更改路径的MainHMI.ui 重新编译一下,编译成功. 由此证明了 确实 是由路径造成的问题。
随后 用 Notepad++ 打开 *.vcxproj 文件,里面保留有旧有的路径,随即删掉。并且比对了 两者 CustomBuild 的 编译命令,发现并不一样。
<CustomBuild Include="HMIModule\NewJamsHMI\DeleteJams.ui">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Uic%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\uic.exe;%(AdditionalInputs)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Uic%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\ui_%(Filename).h;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"</Command>
</CustomBuild>
立即拷贝MainHMI.ui 下的内容到DeleteJams.ui 中,重新编译,编译成功
4.总结
有时候百度并不是万能的,自己在开发过程中遇到的bug,可以自己先思考一下,使用类似于 "对比分析法",“”代码回退法“ 等 先找到问题产生的根本原因,说不定这个时候问题就可以解决了。有时候在网上捣鼓半天 并没有什么用。