diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 07663734642557664a6cb740e8ebd855d5a4d0b3..eca078d32e5ca46a7b5fe4b86c9239a4cfb6b010 100755
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -49,10 +49,13 @@ ADD_LIBRARY(${LIBRARY_NAME} SHARED
 	rbprmbuilder.impl.cc
 	rbprmbuilder.impl.hh
 	server.cc
-	${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm/rbprmbuilder_idl.py
-	${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm/common_idl.py
 )
 
+ADD_CUSTOM_TARGET(generate_idl_cpp DEPENDS ${ALL_IDL_CPP_STUBS})
+ADD_CUSTOM_TARGET(generate_idl_python DEPENDS ${ALL_IDL_PYTHON_STUBS})
+ADD_DEPENDENCIES (${LIBRARY_NAME} generate_idl_cpp)
+ADD_DEPENDENCIES (${LIBRARY_NAME} generate_idl_python)
+
 PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} hpp-rbprm)
 PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} hpp-model-urdf)
 PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} hpp-corbaserver)
@@ -64,52 +67,6 @@ INSTALL(TARGETS ${LIBRARY_NAME} DESTINATION lib)
 # search for python
 FINDPYTHON()
 
-# Generate and install python code for each idl file
-FOREACH (IDL ${IDL_SOURCES})
-  ADD_CUSTOM_COMMAND(
-    OUTPUT
-    ${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm/${IDL}_idl.py
-    COMMAND ${OMNIIDL}
-    ARGS -bpython -Wbpackage="" -I${CMAKE_SOURCE_DIR}/idl
-    -I${HPP_CORBASERVER_DATAROOTDIR}/idl
-    ${CMAKE_SOURCE_DIR}/idl/hpp/corbaserver/rbprm/${IDL}.idl
-    MAIN_DEPENDENCY
-    ${CMAKE_SOURCE_DIR}/idl/hpp/corbaserver/rbprm/${IDL}.idl
-    )
-  SET_SOURCE_FILES_PROPERTIES(
-    ${CMAKE_CURRENT_BINARY_DIR}/${IDL}_idl.py
-    GENERATED=ON
-    )
-  INSTALL(
-    FILES
-    ${CMAKE_CURRENT_BINARY_DIR}/${IDL}_idl.py
-    DESTINATION ${PYTHON_SITELIB}/hpp/corbaserver/rbprm
-    )
-ENDFOREACH()
-
-# Generate and install python code for each dependency idl file
-FOREACH (IDL ${HPP_CORBASERVER_IDL_SOURCES})
-  ADD_CUSTOM_COMMAND(
-    OUTPUT
-    ${CMAKE_CURRENT_BINARY_DIR}/hpp/corbaserver/rbprm/${IDL}_idl.py
-    COMMAND ${OMNIIDL}
-    ARGS -bpython -Wbpackage=""
-    -I${HPP_CORBASERVER_DATAROOTDIR}/idl
-    ${HPP_CORBASERVER_DATAROOTDIR}/idl/hpp/corbaserver/${IDL}.idl
-    MAIN_DEPENDENCY
-    ${HPP_CORBASERVER_DATAROOTDIR}/idl/hpp/corbaserver/${IDL}.idl
-    )
-  SET_SOURCE_FILES_PROPERTIES(
-    ${CMAKE_CURRENT_BINARY_DIR}/${IDL}_idl.py
-    GENERATED=ON
-    )
-  INSTALL(
-    FILES
-    ${CMAKE_CURRENT_BINARY_DIR}/${IDL}_idl.py
-    DESTINATION ${PYTHON_SITELIB}/hpp/corbaserver/rbprm
-    )
-ENDFOREACH()
-
 INSTALL(
   FILES
   ${CMAKE_CURRENT_SOURCE_DIR}/hpp/corbaserver/rbprm/__init__.py