自定义了oglwidget类,将qwidget提升为oglwidget,但是突然就编译不通过了,总是提示:
error: No rule to make target 'oglwidget.h', needed by 'ui_gcodedlg.h'. Stop
折腾了好久,网上也没有好的解决办法,比较靠谱的回答是:
提示以mingw32-make开头
提示包含在'Entering directory'和'Leaving directory'两条提示之间
提示最后为Error while... When executing step "Make"
由以上三点可以看出:问题出现在Make阶段,并告诉了问题所在的directory
且该目录为构建目录,其中的文件可以删除。
【解决方法】
删除构建目录下的Makefile, Makefile.Debug和Makefile.Releases三个文件,并重新构建项目。
【经验总结】
(1) 该问题主要出现在资源文件的修改上
(2) 构建目录中的三个Makefile文件包含项目中的一些文件信息。
(3) 修改项目中资源文件的名称或删除资源文件,并不会实时修改构建目录中的三个Makefile文件。
(4) 构建项目时如果构建目录中没有Makefile文件,则会重新生成Makefile文件;
如果已经存在Makefile文件,系统并不会去更新Makefile文件, 并直接使用其进行Make操作,就导致了No rule to make target的问题。
提示这个错误后,如果重新生成,还会将ui_gcodedlg.h清除。这是因为找不到oglwidget,导致ui_gcodedlg.h生成失败。Ui_gcodeglg.h是由creator自动生成的。
打开makefile.realse文件,搜索oglwidget.h,发现了这一段:
ui_gcodedlg.h: gcodedlg.ui \
C:/Qt/Qt5.12.3/5.12.3/mingw73_64/bin/uic.exe \
gles/oglwidget.h
是ui_gcodedlg.h的生成规则,这里的oglwidget.h的路径不对,路径修改后重新编译,能生成ui_gcodedlg.h,编译通过。