2012-09-25 47 views
0

我的設置在規則上ui_form.h依賴:
我創造和Qt設計更新form.ui文件,並使用所產生的的Makefileqmake。使用form.ui,make正確生成ui_form.h,其包含在myWidget.cc中。QMAKE Makefile中不包括myWidget.o

問題:
form.ui更新,make相應再生ui_form.h。但是,myWidget.o未重新生成,因此UI更新未反映在重新編譯的應用程序中。在檢查Makefile後,事實證明,myWidget.o規則不依賴於ui_form.h

問題:
我怎麼能強迫qmake包括在的Makefile它生成所需的依賴?
注意:由於每次運行qmake時都會自動生成Makefile,所以手動編輯Makefile只是我寧願避免的臨時解決方案。

相關:
- This question確定了一個類似的問題,但仍然是開放的。答覆沒有充分地探究問題(將其縮小到缺少的Makefile依賴項),並且給出的解決方案不起作用。
- 有關於添加依賴到Makefilehere的討論,但是這個問題也是開放的,並且場景與我的不同。

+1

您是否重新運行的qmake重新生成makefile文件?我過去遇到過問題,我改變了代碼就足以要求重新運行qmake,但還不足以導致舊的makefile觸發重新運行。(雖然我不記得具體是怎麼做的。) – jwernerny

+0

你的myWidget.cc實際上#include,直接或間接地,ui_form.h,爲了qmake有一個依賴檢測? –

回答

0

我也有問題,myWidget.o規則沒有列出ui_form.h作爲makefile中的依賴項。在我的情況下,ui_form.h是間接依賴項(myWidget.h包含ui_form.h)。

對於Qmake生成包含頭文件作爲依賴項(直接或間接包含)的生成文件,需要正確設置INCLUDEPATHDEPENDPATHhere)。

的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 

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 \ 
         release/tmp/ui_form.h 
     $(CXX) -c $(CXXFLAGS) $(INCPATH) -o release/tmp/myWidget.o src/source/myWidget.cpp