Hi,

today I learned that qmake apparently can work with #included moc files but 
only if they are of the form moc_<name>.cpp. But KDE4_AUTOMOC wants them as 
<name>.moc.

In order to make it easier to switch from qmake to cmake (and back) I suggest 
the attached patch.

There's one issue I don't understand yet: Why are the *.moc files (and with my 
patch the moc_*.cpp files) added to add_library/add_executable? If they're 
compiled twice, linking obviously fails. Is it necessary to add a dependency? 
I disabled it for KDE4_ADD_LIBRARY in order to be able to test it with 
libphonon, and I have not seen any problems yet while compiling kdelibs.

Please CC me as I'm not subscribed to this list.

-- 
________________________________________________________
Matthias Kretz (Germany)                            <><
http://Vir.homelinux.org/
[EMAIL PROTECTED], [EMAIL PROTECTED],
[EMAIL PROTECTED]
Index: KDE4Macros.cmake
===================================================================
--- KDE4Macros.cmake	(revision 671744)
+++ KDE4Macros.cmake	(working copy)
@@ -173,11 +173,18 @@
          file(READ ${_abs_FILE} _contents)
          get_filename_component(_abs_PATH ${_abs_FILE} PATH)
 
-         string(REGEX MATCHALL "#include +[^ ]+\\.moc[\">]" _match "${_contents}")
+         string(REGEX MATCHALL "#include +([\"<]moc_[^ ]+\\.cpp|[^ ]+\\.moc)[\">]" _match "${_contents}")
          if (_match)
             foreach (_current_MOC_INC ${_match})
                string(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}")
-               get_filename_component(_basename ${_current_MOC} NAME_WE)
+               if(_current_MOC)
+                  get_filename_component(_basename ${_current_MOC} NAME_WE)
+               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}")
+               endif(_current_MOC)
+
                set(_header ${_abs_PATH}/${_basename}.h)
                set(_moc    ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC})
 
@@ -843,9 +850,9 @@
 
    if (KDE4_ENABLE_FINAL)
       kde4_create_final_files(${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp _separate_files ${_first_SRC} ${ARGN})
-      add_library(${_target_NAME} ${_add_lib_param}  ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp ${_separate_files} ${_automoc_FILES})
+      add_library(${_target_NAME} ${_add_lib_param}  ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp ${_separate_files}) # ${_automoc_FILES})
    else (KDE4_ENABLE_FINAL)
-      add_library(${_target_NAME} ${_add_lib_param} ${_first_SRC} ${ARGN} ${_automoc_FILES})
+      add_library(${_target_NAME} ${_add_lib_param} ${_first_SRC} ${ARGN}) # ${_automoc_FILES})
    endif (KDE4_ENABLE_FINAL)
 
    kde4_handle_rpath_for_library(${_target_NAME})

Attachment: pgpbcphuvjf30.pgp
Description: PGP signature

_______________________________________________
Kde-buildsystem mailing list
Kde-buildsystem@kde.org
https://mail.kde.org/mailman/listinfo/kde-buildsystem

Reply via email to