diff --git a/cmake/DD4hep.cmake b/cmake/DD4hep.cmake
index 0b6be6a98f25496d8c4f2047a38ea7ae6741eef5..46328b4d14b3c4268c59d8a8a3514415b12b7c8a 100644
--- a/cmake/DD4hep.cmake
+++ b/cmake/DD4hep.cmake
@@ -9,9 +9,9 @@ function(dd4hep_generate_rootmap library)
 
   set(libname ${CMAKE_SHARED_MODULE_PREFIX}${library}${CMAKE_SHARED_LIBRARY_SUFFIX})
   add_custom_command(OUTPUT ${rootmapfile}
-                     COMMAND cd ${LIBRARY_OUTPUT_PATH} && 
-		     	     . ${CMAKE_BINARY_DIR}/thisdd4hep.sh &&
-		     	     genmap ${ROOT_genmap_CMD} -i ${libname} -o ${rootmapfile}
+                     COMMAND ${CMAKE_COMMAND} -Dlibname=${libname} -Drootmapfile=${rootmapfile}
+                             -Dgenmap_install_dir=${LIBRARY_OUTPUT_PATH}
+                             -P ${CMAKE_SOURCE_DIR}/cmake/MakeRootMap.cmake
                      DEPENDS ${library})
   add_custom_target(${library}Rootmap ALL DEPENDS ${rootmapfile})
 
@@ -37,8 +37,9 @@ function(dd4hep_install_library library)
   set(libname ${CMAKE_SHARED_MODULE_PREFIX}${library}${CMAKE_SHARED_MODULE_SUFFIX})
 
   add_custom_command(OUTPUT ${rootmapfile}
-                     COMMAND echo
-		             ${library} ${LIBRARY_OUTPUT_DIR}
-                     DEPENDS ${library})
+		     SET ( ENV{LD_LIBRARY_PATH} ./:$ENV{LD_LIBRARY_PATH} )
+		     COMMAND echo
+			     ${library} ${LIBRARY_OUTPUT_DIR}
+		     DEPENDS ${library})
   add_custom_target(${library}Install ALL DEPENDS ${installfile})
 endfunction()
diff --git a/cmake/MakeRootMap.cmake b/cmake/MakeRootMap.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..dd01e7d2211f35960770209e0be2c96477754d1f
--- /dev/null
+++ b/cmake/MakeRootMap.cmake
@@ -0,0 +1,5 @@
+SET ( ENV{LD_LIBRARY_PATH} ./:$ENV{LD_LIBRARY_PATH} )
+EXECUTE_PROCESS( COMMAND 
+		 genmap -i ${libname} -o ${rootmapfile}
+                 WORKING_DIRECTORY ${genmap_install_dir}
+)