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能够检测到依赖关系?