我还遇到了 myWidget.o 规则没有将 ui_form.h 列为 makefile 中的依赖项的问题。在我的例子中,ui_form.h 是一个间接依赖(myWidget.h 包括 ui_form.h)。
为了让 Qmake 生成包含头文件作为依赖项(直接或间接包含)的 makefile,需要正确设置INCLUDEPATH和DEPENDPATH (此处)。
生成文件
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
项目.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
}
生成文件
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