aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/FindKDE4Internal.cmake3
-rw-r--r--modules/KDE4Macros.cmake55
2 files changed, 33 insertions, 25 deletions
diff --git a/modules/FindKDE4Internal.cmake b/modules/FindKDE4Internal.cmake
index 7f1e2117..8416917c 100644
--- a/modules/FindKDE4Internal.cmake
+++ b/modules/FindKDE4Internal.cmake
@@ -101,8 +101,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
diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake
index 91aaa53e..21ee0836 100644
--- a/modules/KDE4Macros.cmake
+++ b/modules/KDE4Macros.cmake
@@ -13,32 +13,39 @@
#neundorf@kde.org
-macro (KDE4_ADD_KCFG_FILES _sources)
- foreach (_current_FILE ${ARGN})
+macro (KDE4_ADD_KCFG_FILES _sources )
+ IF( ${ARGV1} STREQUAL "GENERATE_MOC" )
+ SET(_kcfg_generatemoc TRUE)
+ ENDIF( ${ARGV1} 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} )
-
- 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} )
-
- set(${_sources} ${${_sources}} ${_src_FILE} ${_header_FILE})
+ foreach (_current_FILE ${ARGN})
+ 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} )
+
+ 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)