I finally sitted down to write that optional parameter 
for   "kde4_add_kcfg_files" to only generate moc files for kcfg on demand.

Since only 1% of kcfg files need moc, I added a optional parameter to generate 
moc.

Comments and improvements is appreciated :)

-- 
Michaël Larouche
KDE developer working on Kopete, Kamefu, Solid...on dial-up :P
--------------------------------------
Website: http://www.tehbisnatch.org/
MSN/Email: [EMAIL PROTECTED]
IRC: irc.freenode.org/DarkShock on #kopete,#solid,#kamefu,#plasma
Jabber: [EMAIL PROTECTED]
Index: cmake/modules/FindKDE4Internal.cmake
===================================================================
--- cmake/modules/FindKDE4Internal.cmake	(révision 558270)
+++ cmake/modules/FindKDE4Internal.cmake	(copie de travail)
@@ -99,8 +99,9 @@
 # KDE4_ADD_UI3_FILES (SRCS_VAR file1.ui ... fileN.ui)
 #    Use this to add Qt designer ui files from Qt version 3 to your application/library.
 #
-# KDE4_ADD_KCFG_FILES (SRCS_VAR file1.kcfgc ... fileN.kcfgc)
+# KDE4_ADD_KCFG_FILES (SRCS_VAR [GENERATE_MOC] file1.kcfgc ... fileN.kcfgc)
 #    Use this to add KDE config compiler files to your application/library.
+#    Use optional GENERATE_MOC to generate moc if you use signals in your kcfg files.
 #
 # KDE4_ADD_WIDGET_FILES (SRCS_VAR file1.widgets ... fileN.widgets)
 #    Use this to add widget description files for the makekdewidgets code generator
Index: cmake/modules/KDE4Macros.cmake
===================================================================
--- cmake/modules/KDE4Macros.cmake	(révision 558270)
+++ cmake/modules/KDE4Macros.cmake	(copie de travail)
@@ -13,32 +13,39 @@
 
 [EMAIL PROTECTED]
 
-macro (KDE4_ADD_KCFG_FILES _sources)
+macro (KDE4_ADD_KCFG_FILES _sources )
+   IF( ${ARGV1} STREQUAL "GENERATE_MOC" )
+      SET(_kcfg_generatemoc TRUE)
+   ENDIF( ${ARGV1} STREQUAL "GENERATE_MOC" )
+
    foreach (_current_FILE ${ARGN})
 
-      get_filename_component(_tmp_FILE ${_current_FILE} ABSOLUTE)
-      get_filename_component(_abs_PATH ${_tmp_FILE} PATH)
-      get_filename_component(_basename ${_tmp_FILE} NAME_WE)
+     if(NOT ${_current_FILE} STREQUAL "GENERATE_MOC")
+       get_filename_component(_tmp_FILE ${_current_FILE} ABSOLUTE)
+       get_filename_component(_abs_PATH ${_tmp_FILE} PATH)
+       get_filename_component(_basename ${_tmp_FILE} NAME_WE)
 
-      file(READ ${_tmp_FILE} _contents)
-      string(REGEX REPLACE "^(.*\n)?File=([^\n]+kcfg).*\n.*$" "\\2"  _kcfg_FILE "${_contents}")
-      set(_src_FILE    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
-      set(_header_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
-      set(_moc_FILE    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc)
-      
-      # the command for creating the source file from the kcfg file
-      add_custom_command(OUTPUT ${_header_FILE} ${_src_FILE}
-         COMMAND ${KDE4_KCFGC_EXECUTABLE}
-         ARGS ${_abs_PATH}/${_kcfg_FILE} ${_tmp_FILE} -d ${CMAKE_CURRENT_BINARY_DIR}
-         MAIN_DEPENDENCY ${_tmp_FILE}
-         DEPENDS ${_abs_PATH}/${_kcfg_FILE} ${_KDE4_KCONFIG_COMPILER_DEP} )
+       file(READ ${_tmp_FILE} _contents)
+       string(REGEX REPLACE "^(.*\n)?File=([^\n]+kcfg).*\n.*$" "\\2"  _kcfg_FILE "${_contents}")
+       set(_src_FILE    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.cpp)
+       set(_header_FILE ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.h)
+       set(_moc_FILE    ${CMAKE_CURRENT_BINARY_DIR}/${_basename}.moc)
 
-      qt4_generate_moc(${_header_FILE} ${_moc_FILE} )
-      set_source_files_properties(${_src_FILE} PROPERTIES SKIP_AUTOMOC TRUE)  # dont run automoc on this file
-      macro_add_file_dependencies(${_src_FILE} ${_moc_FILE} )
+       # the command for creating the source file from the kcfg file
+       add_custom_command(OUTPUT ${_header_FILE} ${_src_FILE}
+          COMMAND ${KDE4_KCFGC_EXECUTABLE}
+          ARGS ${_abs_PATH}/${_kcfg_FILE} ${_tmp_FILE} -d ${CMAKE_CURRENT_BINARY_DIR}
+          MAIN_DEPENDENCY ${_tmp_FILE}
+          DEPENDS ${_abs_PATH}/${_kcfg_FILE} ${_KDE4_KCONFIG_COMPILER_DEP} )
 
-      set(${_sources} ${${_sources}} ${_src_FILE} ${_header_FILE})
+       if(_kcfg_generatemoc)
+         qt4_generate_moc(${_header_FILE} ${_moc_FILE} )
+         set_source_files_properties(${_src_FILE} PROPERTIES SKIP_AUTOMOC TRUE)  # dont run automoc on this file
+         macro_add_file_dependencies(${_src_FILE} ${_moc_FILE} )
+       endif(_kcfg_generatemoc)
 
+       set(${_sources} ${${_sources}} ${_src_FILE} ${_header_FILE})
+     endif(NOT ${_current_FILE} STREQUAL "GENERATE_MOC")
    endforeach (_current_FILE)
 
 endmacro (KDE4_ADD_KCFG_FILES)
_______________________________________________
Kde-buildsystem mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-buildsystem

Reply via email to