diff --git a/cmake/DD4hepBuild.cmake b/cmake/DD4hepBuild.cmake
index 5a7aa9c53b793f411787a6622c03c58d98bdde3a..088abfa8c41455e2422989294d1460a2aa7a792c 100644
--- a/cmake/DD4hepBuild.cmake
+++ b/cmake/DD4hepBuild.cmake
@@ -468,40 +468,29 @@ endfunction()
 #
 #---------------------------------------------------------------------------------------------------
 function ( fill_dd4hep_library_path )
-  get_filename_component(ROOT_LIBDIR "${ROOT_Core_LIBRARY}" DIRECTORY)
-  set( _libpath ${ROOT_LIBDIR} )
+  string(REGEX REPLACE "/lib/libCore.*" "" ROOT_ROOT ${ROOT_Core_LIBRARY})
+  SET( ENV{DD4HEP_LIBRARY_PATH} ${ROOT_ROOT}/lib )
   if ( NOT "${Boost_LIBRARY_DIRS}" STREQUAL "" )
-    list( APPEND _libpath "${Boost_LIBRARY_DIRS}" )
+    SET( ENV{DD4HEP_LIBRARY_PATH} $ENV{DD4HEP_LIBRARY_PATH}:${Boost_LIBRARY_DIRS} )
   else()
     dd4hep_print("|++> The boost library path cannot be determined. Problems maybe ahead.")
   endif()
   if ( ${DD4HEP_USE_GEANT4} )
-    get_filename_component(Geant4_LIBDIR "${Geant4_DIR}" DIRECTORY)
-    list( INSERT _libpath 0 "${Geant4_LIBDIR}" )
+    string(REGEX REPLACE "/lib/Geant4.*" "" Geant4_ROOT ${Geant4_DIR})
+    SET( ENV{DD4HEP_LIBRARY_PATH} ${Geant4_ROOT}/lib:$ENV{DD4HEP_LIBRARY_PATH} )
   endif()
 
   if(${DD4HEP_USE_LCIO})
-    list( INSERT _libpath 0 "${LCIO_DIR}/lib" )
+    SET( ENV{DD4HEP_LIBRARY_PATH} ${LCIO_DIR}/lib:$ENV{DD4HEP_LIBRARY_PATH} )
   endif()
 
-  if(DD4HEP_USE_GEANT4 AND DD4HEP_USE_CLHEP)
-    # Using external CLHEP (not Geant4's builtin)
-    get_target_property(_loc CLHEP::CLHEP LOCATION)
-    get_filename_component(_dir "${_loc}" DIRECTORY)
-    list( INSERT _libpath 0 "${_dir}" )
-  endif()
+  SET( ENV{DD4HEP_LIBRARY_PATH} ${CLHEP_ROOT_DIR}/lib:$ENV{DD4HEP_LIBRARY_PATH} )
 
-  if(XERCESC_LIB_DIR)
-    list( INSERT _libpath 0 "${XERCESC_LIB_DIR}" )
+  if(${DD4HEP_USE_XERCESC})
+    SET( ENV{DD4HEP_LIBRARY_PATH} ${XERCESC_ROOT_DIR}/lib:$ENV{DD4HEP_LIBRARY_PATH} )
   endif()
 
-  list( INSERT _libpath 0 "${CMAKE_BINARY_DIR}/lib" )
-  list( REMOVE_DUPLICATES _libpath )
-  # Exclude common system library directories. These are automatically searched anyway,
-  # and prepending them before the locations of the externals may cause trouble.
-  list( REMOVE_ITEM _libpath "/usr/lib" "/usr/local/lib" )
-  string( REGEX REPLACE ";" ":" _libpath "${_libpath}" )
-  set( ENV{DD4HEP_LIBRARY_PATH} "${_libpath}" )
+  SET( ENV{DD4HEP_LIBRARY_PATH} ${CMAKE_BINARY_DIR}/lib:$ENV{DD4HEP_LIBRARY_PATH} )
 endfunction()