diff --git a/cmake_support/OST.cmake b/cmake_support/OST.cmake
index c630e8b445ff3d0115e73a6a130a5738ae02ba7e..6190ef360d50a0419e0856c14568daad914478eb 100644
--- a/cmake_support/OST.cmake
+++ b/cmake_support/OST.cmake
@@ -393,6 +393,27 @@ macro(ui_to_python module out_files)
   endforeach()
 endmacro()
 
+#-------------------------------------------------------------------------------
+# Synopsis:
+#   compile_py_files(module out_files [input_file1 ...])
+# Description:
+#   Calls pyuic on every input file. The resulting python files are stored in
+#   the variable with name out_files.
+#-------------------------------------------------------------------------------
+macro(compile_py_files module out_dir)
+  set(_input_files ${ARGN})
+  foreach(input_file ${_input_files})
+    get_filename_component(_out_file ${input_file} NAME_WE)
+    get_filename_component(_in_file ${input_file} ABSOLUTE)
+    set(_out_file ${out_dir}/${_out_file}.pyc)
+    file(MAKE_DIRECTORY  ${out_dir})
+    add_custom_command(TARGET ${module}
+                       COMMAND ${PYTHON_BINARY} -c "import py_compile;py_compile.compile(\"${_in_file}\",\"${_out_file}\",doraise=True)"
+                       VERBATIM DEPENDS ${input_file}
+                       )
+  endforeach()
+endmacro()
+
 #-------------------------------------------------------------------------------
 # Synopsis:
 #   pymod(NAME name CPP source1 source2 PY source source2 [IN_DIR dir] 
@@ -494,9 +515,10 @@ macro(pymod)
                   "${LIB_DIR}/${PYMOD_DIR}/${_DIR}")
           string(REPLACE "/" "_" _DIR_NO_SLASH "${_DIR}")
           add_custom_target("${_ARG_NAME}_${_DIR_NO_SLASH}_pymod" ALL)
-          copy_if_different("./" "${PYMOD_STAGE_DIR}/${_DIR}" 
-                            "${_ABS_PY_FILES}" "TARGETS"
-                            "${_ARG_NAME}_${_DIR_NO_SLASH}_pymod")
+          #copy_if_different("./" "${PYMOD_STAGE_DIR}/${_DIR}"
+          #                  "${_ABS_PY_FILES}" "TARGETS"
+          #                  "${_ARG_NAME}_${_DIR_NO_SLASH}_pymod")
+          compile_py_files(_${_LIB_NAME} ${PYMOD_STAGE_DIR}/${_DIR} ${_ABS_PY_FILES})
           set(_PY_FILES)
         else()
           list(APPEND _PY_FILES "${_PY_FILE}")
@@ -508,9 +530,10 @@ macro(pymod)
       if (_ARG_UI)
         add_dependencies("${_LIB_NAME}_pymod" "${_LIB_NAME}_ui"})
       endif()
-      copy_if_different("./" "${PYMOD_STAGE_DIR}" "${_PY_FILES}" "TARGETS"
-                        "${_LIB_NAME}_pymod")
-      add_dependencies("_${_LIB_NAME}" "${_LIB_NAME}_pymod")
+      #copy_if_different("./" "${PYMOD_STAGE_DIR}" "${_PY_FILES}" "TARGETS"
+      #                  "${_LIB_NAME}_pymod")
+      #add_dependencies("_${_LIB_NAME}" "${_LIB_NAME}_pymod")
+      compile_py_files(_${_LIB_NAME} ${PYMOD_STAGE_DIR} ${_PY_FILES})
       include_directories(${PYTHON_INCLUDE_PATH})
       install(FILES ${_PY_FILES} DESTINATION "${LIB_DIR}/${PYMOD_DIR}")
       endif()