Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt4 qmake Makefile在myWidget.o的规则中不包含对ui_form.h的依赖关系_Qt4_Makefile_Qmake - Fatal编程技术网

Qt4 qmake Makefile在myWidget.o的规则中不包含对ui_form.h的依赖关系

Qt4 qmake Makefile在myWidget.o的规则中不包含对ui_form.h的依赖关系,qt4,makefile,qmake,Qt4,Makefile,Qmake,我的设置: 我正在Qt设计器中创建和更新form.ui文件,并使用qmake生成的Makefile。使用form.ui,make正确生成ui\u form.h,它包含在myWidget.cc中 问题: 更新form.ui时,make相应地重新生成ui\u form.h。但是,myWidget.o不会重新生成,因此UI更新不会反映在重新编译的应用程序中。在检查Makefile时,发现myWidget.o规则不依赖于ui\u form.h 问题是: 如何强制qmake在生成的Makefile中包含所

我的设置:
我正在Qt设计器中创建和更新form.ui文件,并使用
qmake
生成的Makefile。使用form.ui,
make
正确生成ui\u form.h,它包含在myWidget.cc中

问题:
更新form.ui时,
make
相应地重新生成ui\u form.h。但是,myWidget.o不会重新生成,因此UI更新不会反映在重新编译的应用程序中。在检查Makefile时,发现myWidget.o规则不依赖于ui\u form.h

问题是:
如何强制
qmake
在生成的Makefile中包含所需的依赖项?
注意:由于每次运行
qmake
时都会自动生成Makefile,因此手动编辑Makefile只是一个临时解决方案,我宁愿避免

相关:
--确定了类似的问题,但仍然存在。答复没有充分探讨问题(将其缩小到缺少Makefile依赖项),给出的解决方案也不起作用。

--有一个关于向Makefile添加依赖项的讨论,但是这个问题仍然存在,并且场景与我的不同。

我还有一个问题,myWidget.o规则没有将ui\u form.h列为Makefile中的依赖项。在我的例子中,ui_form.h是一个间接依赖项(myWidget.h包括ui_form.h)

要使Qmake生成包含头文件作为依赖项(直接或间接包含)的makefile,需要正确设置and()

Makefile

release/tmp/myWidget.o: src/source/myWidget.cpp src/source/myWidget.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/tmp/myWidget.o src/source/myWidget.cpp
release/tmp/myWidget.o: src/source/myWidget.cpp src/source/myWidget.h \
                        release/tmp/ui_form.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/tmp/myWidget.o src/source/myWidget.cpp
Project.pro

INCLUDEPATH += src/header
DEPENDPATH += src/header

CONFIG += debug_and_release

CONFIG(debug, debug|release) {
     DESTDIR      = debug
     RCC_DIR      = debug/tmp
     OBJECTS_DIR  = debug/tmp
     UI_DIR       = debug/tmp
     MOC_DIR      = debug/tmp
     INCLUDEPATH += debug/tmp
     DEPENDPATH  += debug/tmp
} else {
     DESTDIR      = release
     RCC_DIR      = release/tmp
     OBJECTS_DIR  = release/tmp
     UI_DIR       = release/tmp
     MOC_DIR      = release/tmp
     INCLUDEPATH += release/tmp
     DEPENDPATH  += release/tmp
}
Makefile

release/tmp/myWidget.o: src/source/myWidget.cpp src/source/myWidget.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/tmp/myWidget.o src/source/myWidget.cpp
release/tmp/myWidget.o: src/source/myWidget.cpp src/source/myWidget.h \
                        release/tmp/ui_form.h
        $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/tmp/myWidget.o src/source/myWidget.cpp

您是否重新运行qmake以重新生成makefile?我在过去曾经遇到过这样的问题:我对代码的更改刚好足以要求重新运行qmake,但还不足以导致旧的makefile触发重新运行。(我不记得我到底是怎么做的。)那么你的myWidget.cc是否直接或间接地包含ui_form.h,以便qmake能够检测到依赖关系?