From 40e3671bd2656be9657abe8c6d955cef612805c5 Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Mon, 1 Apr 2013 23:08:13 +0300 Subject: Improve Makefile rules for running moc The previous rules were conflicting, and the naming of the moc-generated file to be included in .cpp files was deviating from what's most used in Qt: the usual way is to #include "file.moc" and not #include "file.moc.cpp" Signed-off-by: Alberto Mardegan --- Makefile | 15 ++++++++++----- qt-gui.cpp | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index aeb3cca0f..c0114386c 100644 --- a/Makefile +++ b/Makefile @@ -306,18 +306,23 @@ MOCFLAGS = $(filter -I%, $(CXXFLAGS) $(EXTRA_FLAGS)) $(filter -D%, $(CXXFLAGS) $ @mkdir -p .dep @$(CXX) $(CXXFLAGS) $(EXTRA_FLAGS) -MD -MF .dep/$@.dep -c -o $@ $< +# This rule is for running the moc on QObject subclasses defined in the .h +# files. +# To activate this rule, add .moc.o to the OBJS variable. %.moc.cpp: %.h @echo ' MOC' $< @$(MOC) $(MOCFLAGS) $< -o $@ -# This rule is for running the moc on QObject subclasses defined in the .cpp files; -# remember to #include ".moc.cpp" at the end of the .cpp file, or you'll -# get linker errors ("undefined vtable for...") -%.moc.cpp: %.cpp +# This rule is for running the moc on QObject subclasses defined in the .cpp +# files; remember to #include ".moc" at the end of the .cpp file, or +# you'll get linker errors ("undefined vtable for...") +# To activate this rule, you need another rule on the .o file, like: +# file.o: file.moc +%.moc: %.cpp @echo ' MOC' $< @$(MOC) -i $(MOCFLAGS) $< -o $@ -qt-gui.o: qt-gui.moc.cpp +qt-gui.o: qt-gui.moc %.ui.h: ui/%.ui @echo ' UIC' $< diff --git a/qt-gui.cpp b/qt-gui.cpp index 3285d8e27..0fbcf2555 100644 --- a/qt-gui.cpp +++ b/qt-gui.cpp @@ -2394,4 +2394,4 @@ gdouble get_screen_dpi(void) return dpi_h; } -#include "qt-gui.moc.cpp" +#include "qt-gui.moc" -- cgit v1.2.3-70-g09d2