[cmake-developers] [CMake 0013299]: Build should abort if moc fails
Mantis Bug Tracker
mantis at public.kitware.com
Wed Jun 13 16:06:20 EDT 2012
The following issue has been SUBMITTED.
======================================================================
http://public.kitware.com/Bug/view.php?id=13299
======================================================================
Reported By: Stephen Kelly
Assigned To:
======================================================================
Project: CMake
Issue ID: 13299
Category: CMake
Reproducibility: always
Severity: minor
Priority: normal
Status: new
======================================================================
Date Submitted: 2012-06-13 16:06 EDT
Last Modified: 2012-06-13 16:06 EDT
======================================================================
Summary: Build should abort if moc fails
Description:
Add a signal which is templated (which causes moc to return an error), and run
the unit test. Instead of aborting when moc notifies an error, the build fails
later when attempting to include the generated file (using make -j1), as below.
As a failed moc run does not overwrite the target file, an old file can be left
behind, causing even the #include to work properly, hiding the bug.
Generating private_slot.moc
/home/stephen/dev/src/cmake/Tests/QtAutomoc/private_slot.h:15: Error: Template
function as signal or slot
AUTOMOC: error: process for
/home/stephen/dev/src/cmake/Tests/QtAutomoc/build/private_slot.moc failed:
/home/stephen/dev/src/cmake/Tests/QtAutomoc/private_slot.h:15: Error: Template
function as signal or slot
Generating sub/moc_bar.cpp
Generating moc_xyz.cpp
Generating yaf_p.moc
Generating moc_calwidget.cpp
Generating moc_foo.cpp
returning failed..
[ 28%] Built target foo_automoc
Scanning dependencies of target foo
[ 35%] Building CXX object CMakeFiles/foo.dir/main.cpp.o
[ 42%] Building CXX object CMakeFiles/foo.dir/calwidget.cpp.o
[ 50%] Building CXX object CMakeFiles/foo.dir/foo.cpp.o
[ 57%] Building CXX object CMakeFiles/foo.dir/blub.cpp.o
[ 64%] Building CXX object CMakeFiles/foo.dir/bar.cpp.o
[ 71%] Building CXX object CMakeFiles/foo.dir/abc.cpp.o
[ 78%] Building CXX object CMakeFiles/foo.dir/xyz.cpp.o
[ 85%] Building CXX object CMakeFiles/foo.dir/yaf.cpp.o
[ 92%] Building CXX object CMakeFiles/foo.dir/private_slot.cpp.o
/home/stephen/dev/src/cmake/Tests/QtAutomoc/private_slot.cpp:21:28: fatal error:
private_slot.moc: No such file or directory
compilation terminated.
make[2]: *** [CMakeFiles/foo.dir/private_slot.cpp.o] Error 1
make[1]: *** [CMakeFiles/foo.dir/all] Error 2
make: *** [all] Error 2
makeobj[0]: Leaving directory
`/home/stephen/dev/src/cmake/Tests/QtAutomoc/build'
Qt( 4.8 ) KDE ( )
stephen at hal:~/dev/src/cmake/Tests/QtAutomoc/build{master}$ git diff
diff --git a/Tests/QtAutomoc/private_slot.h b/Tests/QtAutomoc/private_slot.h
index 28e5448..b5177e3 100644
--- a/Tests/QtAutomoc/private_slot.h
+++ b/Tests/QtAutomoc/private_slot.h
@@ -12,6 +12,9 @@ class PrivateSlot : public QObject
public:
PrivateSlot(QObject *parent = 0);
+signals:
+ template<int> void someSignal();
+
private:
PrivateSlotPrivate * const d;
Q_PRIVATE_SLOT(d, void privateSlot())
======================================================================
Issue History
Date Modified Username Field Change
======================================================================
2012-06-13 16:06 Stephen Kelly New Issue
======================================================================
More information about the cmake-developers
mailing list