rendered paste bodyIndex: kde4automoc.cmake
===================================================================
--- kde4automoc.cmake (revision 680441)
+++ kde4automoc.cmake (working copy)
@@ -24,14 +24,24 @@
string(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}")
if(_current_MOC)
get_filename_component(_basename ${_current_MOC} NAME_WE)
+
+ # if the .cpp file contains the Q_OBJECT macro we create the .moc file from the .cpp file
+ string(REGEX MATCH "^\s*Q_OBJECT" _matches_q_object "${_contents})
+ if (_matches_q_object)
+ set(_header ${_abs_PATH}/${_basename}.h)
+ else (_matches_q_object)
+ set(_header ${_filename})
+ endif (_matches_q_object)
else(_current_MOC)
string(REGEX MATCH "moc_[^ <\"]+\\.cpp" _current_MOC "${_current_MOC_INC}")
get_filename_component(_basename ${_current_MOC} NAME_WE)
string(REPLACE "moc_" "" _basename "${_basename}")
+
+ # always create moc_foo.cpp from the .h
+ set(_header ${_abs_PATH}/${_basename}.h)
endif(_current_MOC)
- set(_header ${_abs_PATH}/${_basename}.h)
- set(_moc ${KDE4_CURRENT_BINARY_DIR}/${_current_MOC})
+ set(_moc ${KDE4_CURRENT_BINARY_DIR}/${_current_MOC})
if (NOT EXISTS ${_header})
message(FATAL_ERROR "In the file \"${_filename}\" the moc file \"${_current_MOC}\" is included, but \"${_header}\" doesn't exist.")