diff --git a/core/base/CMakeLists.txt b/core/base/CMakeLists.txt
index 822f3d9a804c0bdc930c6daa77d2ecc874ad1fa3..4f2cce4b560d924ba916968572a0030ef5d161f7 100644
--- a/core/base/CMakeLists.txt
+++ b/core/base/CMakeLists.txt
@@ -1,73 +1,55 @@
-Set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES} 
-  ${Boost_INCLUDE_DIR}
-)
-
-Include_Directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-Set(INCLUDE_DIRECTORIES
-  ${CMAKE_CURRENT_SOURCE_DIR} 
+set(INCLUDE_DIRECTORIES
+  ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/report
   ${CMAKE_CURRENT_SOURCE_DIR}/draw
   ${CMAKE_CURRENT_SOURCE_DIR}/utils
-
-  ${CBMDATA_DIR}
-  ${CBMDATA_DIR}/base
-  ${CBMDATA_DIR}/sts
-  ${CBMDATA_DIR}/tof
-  ${CBMDATA_DIR}/rich
-  ${CBMDATA_DIR}/much
-  ${CBMDATA_DIR}/mvd
-  ${CBMDATA_DIR}/trd
-  ${CBMDATA_DIR}/psd
-)
-Include_Directories( ${INCLUDE_DIRECTORIES})
-
-Set(LINK_DIRECTORIES
-  ${ROOT_LIBRARY_DIR}
-  ${FAIRROOT_LIBRARY_DIR}
-  ${Boost_LIBRARY_DIRS}
-)
- 
-link_directories( ${LINK_DIRECTORIES})
-
-Set(SRCS
-CbmDigiManager.cxx
-
-CbmDigitizeBase.cxx
-CbmDaq.cxx
-
-CbmMCDataArray.cxx
-CbmMCDataManager.cxx
-CbmMCDataObject.cxx
-CbmRadDamage.cxx
-
-CbmHistManager.cxx
-CbmMatchRecoToMC.cxx
-
-draw/CbmDrawHist.cxx
-
-report/CbmReport.cxx      
-report/CbmStudyReport.cxx
-report/CbmSimulationReport.cxx
-report/CbmTextReportElement.cxx
-report/CbmHtmlReportElement.cxx       
-report/CbmLatexReportElement.cxx
-
-utils/CbmUtils.cxx
-utils/CbmGeometryUtils.cxx
-utils/CbmMediaList.cxx
-utils/CbmFileUtils.cxx
-)
-
-
-Set(LINKDEF CbmBaseLinkDef.h)
-Set(LIBRARY_NAME CbmBase)
-Set(DEPENDENCIES
-    CbmData Base boost_regex boost_filesystem
-)
-
-GENERATE_LIBRARY()
+  )
+
+set(SRCS
+  CbmDigiManager.cxx
+  CbmDigitizeBase.cxx
+  CbmDaq.cxx
+  CbmMCDataArray.cxx
+  CbmMCDataManager.cxx
+  CbmMCDataObject.cxx
+  CbmRadDamage.cxx
+  CbmHistManager.cxx
+  CbmMatchRecoToMC.cxx
+  draw/CbmDrawHist.cxx
+  report/CbmReport.cxx      
+  report/CbmStudyReport.cxx
+  report/CbmSimulationReport.cxx
+  report/CbmTextReportElement.cxx
+  report/CbmHtmlReportElement.cxx       
+  report/CbmLatexReportElement.cxx
+  utils/CbmUtils.cxx
+  utils/CbmGeometryUtils.cxx
+  utils/CbmMediaList.cxx
+  utils/CbmFileUtils.cxx
+  )
+
+set(LIBRARY_NAME CbmBase)
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES 
+  CbmData 
+  FairRoot::Base
+  ROOT::Core  
+  ROOT::Gpad 
+  ROOT::Hist
+  )
+
+set(PRIVATE_DEPENDENCIES 
+  FairLogger::FairLogger 
+  FairRoot::GeoBase 
+  Boost::filesystem
+  ROOT::Geom   
+  ROOT::Graf 
+  ROOT::MathCore 
+  ROOT::RIO 
+  ROOT::Tree
+  )
+
+generate_cbm_library()
 
 Install(FILES CbmDigitize.h CbmTrackingDetectorInterfaceBase.h report/CbmReportElement.h
         DESTINATION include
diff --git a/core/data/CMakeLists.txt b/core/data/CMakeLists.txt
index e8e45041fbc7ebbc9be889a821b797f333f98d18..3e9bd576f37ecc591c3d4f9307b14b36d6cc908d 100644
--- a/core/data/CMakeLists.txt
+++ b/core/data/CMakeLists.txt
@@ -13,22 +13,9 @@ set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}/tof
   ${CMAKE_CURRENT_SOURCE_DIR}/rich
   ${CMAKE_CURRENT_SOURCE_DIR}/psd
-  ${CMAKE_CURRENT_SOURCE_DIR}/global
-  ${FLES_IPC_INCLUDE_DIRECTORY}
-)
-include_directories( ${INCLUDE_DIRECTORIES})
-
-set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES}
-)
-include_directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
+  ${CMAKE_CURRENT_SOURCE_DIR}/global 
+  )
 
-set(LINK_DIRECTORIES
-  ${ROOT_LIBRARY_DIR}
-  ${FAIRROOT_LIBRARY_DIR}
-
-)
-link_directories( ${LINK_DIRECTORIES})
 
 set(SRCS
   CbmAddress.cxx
@@ -44,15 +31,12 @@ set(SRCS
   CbmModuleList.cxx
   CbmErrorMessage.cxx
   CbmRawEvent.cxx
-
   CbmMCTrack.cxx
   CbmMCEventInfo.cxx
   CbmMCEventList.cxx
-
   CbmLink.cxx
   CbmMatch.cxx
   CbmTrackMatchNew.cxx
-
   CbmTsEventHeader.cxx
 
   base/CbmDigiBranchBase.cxx
@@ -128,24 +112,38 @@ set(SRCS
   raw/PsdGbtReader-v1.00.cxx
 )
 
-Set(NO_DICT_SRCS
+set(NO_DICT_SRCS
   CbmDefs.cxx
 
   # STAR sub-event writer source code
   tof/etof/star_rhicf.c
-)
+  )
+
 
 # Mask warning from file provided by STAR
 SET_SOURCE_FILES_PROPERTIES(tof/etof/star_rhicf.c PROPERTIES COMPILE_FLAGS -Wno-pointer-sign)
 
-CHANGE_FILE_EXTENSION(*.cxx *.h HEADERS "${SRCS}")
+
 list(APPEND HEADERS base/CbmDigiData.h global/CbmDigiEvent.h global/CbmDigiTimeslice.h)
 
-set(LINKDEF DataLinkDef.h)
 set(LIBRARY_NAME CbmData)
-set(DEPENDENCIES Base)
-
-GENERATE_LIBRARY()
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES 
+  FairRoot::Base
+  ROOT::Core  
+  ROOT::Matrix 
+  ROOT::Physics
+  external::fles_ipc
+  xpu
+  )
+
+set(PRIVATE_DEPENDENCIES 
+  ROOT::EG
+  FairLogger::FairLogger
+  ${VMCLIB}  
+  )
+
+generate_cbm_library()
 
 # Install file which has no corresponding source file
 Install(FILES
@@ -154,3 +152,5 @@ Install(FILES
         raw/bitmask_operators.hpp raw/StsXyterFinalHit.h raw/PsdGbtDataFormat-v0.00.h raw/PsdGbtDataFormat-v1.00.h
         DESTINATION include
        )
+
+
diff --git a/core/data/DataLinkDef.h b/core/data/DataLinkDef.h
deleted file mode 100644
index ecec751d79a71d6c3a51c2bac3caec43d041ea20..0000000000000000000000000000000000000000
--- a/core/data/DataLinkDef.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/* Copyright (C) 2009-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
-   SPDX-License-Identifier: GPL-3.0-only
-   Authors: Florian Uhlig [committer], Volker Friese */
-
-#ifdef __CINT__
-
-#pragma link off all globals;
-#pragma link off all classes;
-#pragma link off all functions;
-
-#pragma link C++ class CbmAddress;
-#pragma link C++ class CbmTimeSlice;
-#pragma link C++ class CbmDigiBranchBase + ;
-#pragma link C++ class CbmEvent + ;
-#pragma link C++ class CbmEventStore + ;
-#pragma link C++ class CbmHit;
-#pragma link C++ class CbmMCTrack + ;
-#pragma link C++ class CbmPixelHit + ;
-#pragma link C++ class CbmStripHit + ;
-#pragma link C++ class CbmTrack + ;
-#pragma link C++ class CbmTrackParam;
-#pragma link C++ class CbmTrackMatch + ;
-#pragma link C++ class CbmCluster + ;
-#pragma link C++ class CbmMatch + ;
-#pragma link C++ class CbmTrackMatchNew + ;
-#pragma link C++ class CbmLink + ;
-#pragma link C++ class CbmModuleList;
-#pragma link C++ class CbmErrorMessage + ;
-#pragma link C++ class CbmRawEvent + ;
-#pragma link C++ class CbmTsEventHeader + ;
-#pragma link C++ class std::vector<CbmErrorMessage> + ;
-
-// ---In base
-#pragma link C++ class CbmDigiBranchBase + ;
-#pragma link C++ class CbmDigiContainer + ;
-
-#pragma link C++ class CbmMCTrack + ;
-#pragma link C++ class CbmMCEventList;
-#pragma link C++ class CbmMCEventInfo;
-
-#pragma link C++ class CbmMvdCluster + ;
-#pragma link C++ class CbmMvdDetectorId + ;
-#pragma link C++ class CbmMvdDigi + ;
-#pragma link C++ class CbmMvdHit + ;
-#pragma link C++ class CbmMvdPoint + ;
-#pragma link C++ class CbmMvdHitMatch + ;
-
-#pragma link C++ namespace CbmStsAddress;
-#pragma link C++ class CbmStsCluster + ;
-#pragma link C++ class CbmStsDigi + ;
-#pragma link C++ class CbmStsHit + ;
-#pragma link C++ class CbmStsPoint + ;
-#pragma link C++ class CbmStsTrack + ;
-#pragma link C++ enum EStsElementLevel;
-
-#pragma link C++ class CbmRichPoint + ;
-#pragma link C++ class CbmRichHit + ;
-#pragma link C++ class CbmRichRing + ;
-#pragma link C++ class CbmRichTrbDigi + ;
-#pragma link C++ class CbmRichDigi + ;
-
-#pragma link C++ class CbmMuchCluster + ;
-#pragma link C++ class CbmMuchPixelHit + ;
-#pragma link C++ class CbmMuchPoint + ;
-#pragma link C++ class CbmMuchDigi + ;
-#pragma link C++ class CbmMuchBeamTimeDigi + ;
-#pragma link C++ class CbmMuchDigiMatch + ;
-#pragma link C++ class CbmMuchTrack + ;
-#pragma link C++ class CbmMuchAddress + ;
-
-#pragma link C++ class CbmTrdHit + ;
-#pragma link C++ class CbmTrdPoint + ;
-#pragma link C++ class CbmTrdTrack + ;
-#pragma link C++ class CbmTrdDigi + ;
-#pragma link C++ class CbmTrdAddress + ;
-#pragma link C++ class CbmTrdCluster + ;
-#pragma link C++ class CbmTrdRawMessageSpadic + ;
-
-#pragma link C++ class CbmTofHit + ;
-#pragma link C++ class CbmTofPoint + ;
-#pragma link C++ class CbmTofDigi + ;
-#pragma link C++ class CbmTofAddress + ;
-#pragma link C++ class CbmTofTracklet + ;
-#pragma link C++ class CbmTofTrackletParam + ;
-
-#pragma link C++ class CbmPsdDigi + ;
-#pragma link C++ class CbmPsdDsp + ;
-#pragma link C++ class CbmPsdHit;
-#pragma link C++ class CbmPsdPoint + ;
-#pragma link C++ class CbmPsdAddress;
-#pragma link C++ class CbmPsdMCbmHit;
-
-// --- data/global
-#pragma link C++ class CbmGlobalTrack + ;
-#pragma link C++ class CbmTofTrack + ;
-#pragma link C++ class CbmVertex + ;
-#pragma link C++ class std::vector < CbmDigiEvent>;
-
-// --- data/raw
-#pragma link C++ class AccTimingEvent;
-#pragma link C++ class AccStatusTs;
-#pragma link C++ class stsxyter::Message;
-#pragma link C++ class gdpbv100::Message;
-#pragma link C++ class gdpbv100::FullMessage;
-#pragma link C++ class critof001::Message;
-#pragma link C++ class critof001::FullMessage;
-#pragma link C++ class TimesliceMetaData;
-#pragma link C++ class PsdDataV000::PsdGbtReader;
-#pragma link C++ class PsdDataV100::PsdGbtReader;
-
-#pragma link C++ class std::vector < stsxyter::Message>;
-#pragma link C++ class std::vector < gdpbv100::Message>;
-#pragma link C++ class std::vector < CbmTrdRawMessageSpadic>;
-
-#pragma link C++ enum ECbmTreeAccess;
-#pragma link C++ enum ECbmModuleId;
-#pragma link C++ enum ECbmDataType;
-
-#pragma link C++ class vector < CbmMvdDigi> + ;
-#pragma link C++ class vector < CbmStsDigi> + ;
-#pragma link C++ class vector < CbmRichDigi> + ;
-#pragma link C++ class vector < CbmMuchDigi> + ;
-#pragma link C++ class vector < CbmMuchBeamTimeDigi> + ;
-#pragma link C++ class vector < CbmTrdDigi> + ;
-#pragma link C++ class vector < CbmTofDigi> + ;
-#pragma link C++ class vector < CbmPsdDigi> + ;
-#pragma link C++ class vector < CbmPsdDsp> + ;
-#pragma link C++ class vector < CbmMatch> + ;
-#pragma link C++ class CbmDigiVector < CbmMvdDigi> + ;
-#pragma link C++ class CbmDigiVector < CbmStsDigi> + ;
-#pragma link C++ class CbmDigiVector < CbmRichDigi> + ;
-#pragma link C++ class CbmDigiVector < CbmMuchDigi> + ;
-#pragma link C++ class CbmDigiVector < CbmMuchBeamTimeDigi> + ;
-#pragma link C++ class CbmDigiVector < CbmTrdDigi> + ;
-#pragma link C++ class CbmDigiVector < CbmTofDigi> + ;
-#pragma link C++ class CbmDigiVector < CbmPsdDigi> + ;
-#pragma link C++ class CbmDigiVector < CbmPsdDsp> + ;
-#pragma link C++ class vector < CbmEventStore> + ;
-
-#pragma link C++ class std::vector < CbmEvent> + ;
-#pragma link C++ class StsDigiData + ;
-#pragma link C++ class MuchDigiData + ;
-#pragma link C++ class RichDigiData + ;
-#pragma link C++ class TrdDigiData + ;
-#pragma link C++ class TofDigiData + ;
-#pragma link C++ class PsdDigiData + ;
-#pragma link C++ class CbmDigiData + ;
-#pragma link C++ class CbmDigiEvent + ;
-#pragma link C++ class std::vector < CbmDigiEvent> + ;
-#pragma link C++ class CbmDigiTimeslice + ;
-
-/* clang-format off */
-#pragma read sourceClass="CbmStsDigi" version="[7]" targetClass="CbmStsDigi" \
-    source="int64_t fTime; int32_t fAddress; uint16_t fChannel; uint16_t fCharge" \
-    target="" \
-    include="Logger.h" \
-    code="{ newObj->SetAddressAndTime(onfile.fAddress, onfile.fTime); \
-            newObj->SetChannelAndCharge(onfile.fChannel, onfile.fCharge); \
-          }"
-
-#pragma read sourceClass = "CbmTofDigi" version = "[1-2]" targetClass = "CbmTofDigi" source =                          \
-  "uint32_t fuAddress" target = "fuAddress" include = "Logger.h" code =                                                \
-    "{ uint32_t system = (onfile.fuAddress >> 0) & ((1 << 4) - 1); \
-           uint32_t smId = (onfile.fuAddress >> 4) & ((1 << 8) - 1); \
-           uint32_t smType = (onfile.fuAddress >> 12) & ((1 << 4) - 1); \
-           uint32_t rpcId = (onfile.fuAddress >> 16) & ((1 << 7) - 1); \
-           uint32_t chSide = (onfile.fuAddress >> 23) & ((1 << 1) - 1); \
-           uint32_t chId = (onfile.fuAddress >> 24) & ((1 << 8) - 1); \
-           if ( smId > 127 || rpcId > 63 || chId > 63 ) { \
-             LOG(error) << \"You are trying to read an outdated version of CbmTofDigi\"; \
-             LOG(error) << \"where the unique tof address can't be converted\"; \
-             LOG(error) << \"automatically to the new tof addressing scheme.\"; \
-             LOG(fatal) << \"Stop execution.\"; \
-           } \
-           uint32_t rpcType = 0; \
-           fuAddress = (system & ((1 << 4) - 1)) \
-                     + ((smId & ((1 << 7) - 1)) << 4) \
-                     + ((smType & ((1 << 4) - 1)) << 11) \
-                     + ((chSide & ((1 << 1) - 1)) << 21) \
-                     + ((rpcId & ((1 << 6) - 1)) << 15) \
-                     + ((chId & ((1 << 6) - 1)) << 22) \
-                     + ((rpcType & ((1 << 4) - 1)) << 28); \
-         }"
-/* clang-format on */
-
-
-#pragma read sourceClass = "CbmTofHit" version = "[1-4]" targetClass = "CbmTofHit" source = "" target = "" include =   \
-  "Logger.h" code                                                                                     = "{ \
-           LOG(error); \
-           LOG(error) << \"You are trying to read an outdated version of CbmTofHit\"; \
-           LOG(error) << \"where the unique tof address can't be converted\"; \
-           LOG(error) << \"automatically to the new tof addressing scheme.\"; \
-           LOG(error); \
-           LOG(fatal) << \"Stop execution.\"; \
-         }"
-
-#pragma read sourceClass = "CbmTofPoint" version = "[1-3]" targetClass = "CbmTofPoint" source = "" target =            \
-  "" include = "Logger.h" code = "{ \
-           LOG(error); \
-           LOG(error) << \"You are trying to read an outdated version of CbmTofPoint\"; \
-           LOG(error) << \"where the unique tof address can't be converted\"; \
-           LOG(error) << \"automatically to the new tof addressing scheme.\"; \
-           LOG(error); \
-           LOG(fatal) << \"Stop execution.\"; \
-         }"
-#endif
diff --git a/core/detectors/much/CMakeLists.txt b/core/detectors/much/CMakeLists.txt
index 1382adc629125b0d36a91e4eed1de7df2239e184..d88ab2ad40b9672b30e74199b59668854abcf56b 100644
--- a/core/detectors/much/CMakeLists.txt
+++ b/core/detectors/much/CMakeLists.txt
@@ -1,63 +1,54 @@
-# Create a library called "libBase" which includes the source files given in
-# the array .
-# The extension is already found.  Any number of sources could be listed
-# here.
-
-Set(INCLUDE_DIRECTORIES
+set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}
-  ${CBMBASE_DIR}
-  ${CBMDATA_DIR}
-  ${CBMDATA_DIR}/much
-)
-
-Include_Directories( ${INCLUDE_DIRECTORIES})
-
-Set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES}
-)
-
-Include_Directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-set(LINK_DIRECTORIES
-${ROOT_LIBRARY_DIR}
-${FAIRROOT_LIBRARY_DIR}
-${Boost_LIBRARY_DIRS}
-)
-
-link_directories( ${LINK_DIRECTORIES})
+  )
 
 set(SRCS
-CbmGeoMuchPar.cxx
-CbmMcbm2018MuchPar.cxx
-CbmMuchUnpackPar.cxx
-CbmMuchContFact.cxx
-CbmMuchGeoScheme.cxx
-CbmMuchLayer.cxx
-CbmMuchLayerSide.cxx
-CbmMuchModule.cxx
-CbmMuchModuleGem.cxx
-CbmMuchModuleGemRadial.cxx
-CbmMuchModuleGemRectangular.cxx
-CbmMuchPad.cxx
-CbmMuchPadRadial.cxx
-CbmMuchPadRectangular.cxx
-CbmMuchPointInfo.cxx
-CbmMuchSector.cxx
-CbmMuchSectorRadial.cxx
-CbmMuchSectorRectangular.cxx
-CbmMuchStation.cxx
-
-CbmMuchSegmentAuto.cxx
-CbmMuchSegmentManual.cxx
-CbmMuchSegmentSector.cxx
-
-CbmMuchTrackingInterface.cxx
-)
-
-set(LINKDEF CbmMuchBaseLinkDef.h)
-Set(LIBRARY_NAME CbmMuchBase)
-Set(DEPENDENCIES
-  CbmData Base
-)
-
-GENERATE_LIBRARY()
+  CbmGeoMuchPar.cxx
+  CbmMcbm2018MuchPar.cxx
+  CbmMuchUnpackPar.cxx
+  CbmMuchContFact.cxx
+  CbmMuchGeoScheme.cxx
+  CbmMuchLayer.cxx
+  CbmMuchLayerSide.cxx
+  CbmMuchModule.cxx
+  CbmMuchModuleGem.cxx
+  CbmMuchModuleGemRadial.cxx
+  CbmMuchModuleGemRectangular.cxx
+  CbmMuchPad.cxx
+  CbmMuchPadRadial.cxx
+  CbmMuchPadRectangular.cxx
+  CbmMuchPointInfo.cxx
+  CbmMuchSector.cxx
+  CbmMuchSectorRadial.cxx
+  CbmMuchSectorRectangular.cxx
+  CbmMuchStation.cxx
+  
+  CbmMuchSegmentAuto.cxx
+  CbmMuchSegmentManual.cxx
+  CbmMuchSegmentSector.cxx
+  
+  CbmMuchTrackingInterface.cxx
+  )
+
+set(LIBRARY_NAME CbmMuchBase)
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES 
+  CbmData 
+  FairRoot::Base
+  FairRoot::ParBase
+  ROOT::Core 
+  ROOT::Geom 
+  ROOT::Graf 
+  ROOT::MathCore 
+  ROOT::Physics
+  CbmBase
+  )
+
+set(PRIVATE_DEPENDENCIES 
+  FairLogger::FairLogger 
+  ROOT::Gpad 
+  ROOT::Hist 
+  ROOT::RIO
+  )
+
+generate_cbm_library()
diff --git a/core/detectors/psd/CMakeLists.txt b/core/detectors/psd/CMakeLists.txt
index 203d4ef3245833e84de1b6ea7fa90c17932228ce..dda508256ed1a8d2a63a7cb16311ebe6a27e80bd 100644
--- a/core/detectors/psd/CMakeLists.txt
+++ b/core/detectors/psd/CMakeLists.txt
@@ -1,31 +1,22 @@
 set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}
-)
-
-include_directories(${INCLUDE_DIRECTORIES})
-
-set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES}
-)
-
-include_directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-set(LINK_DIRECTORIES
-  ${ROOT_LIBRARY_DIR}
-  ${FAIRROOT_LIBRARY_DIR}
-  ${Boost_LIBRARY_DIRS}
-)
-
-link_directories(${LINK_DIRECTORIES})
+  )
 
 set(SRCS
   PronyFitter.cxx
   CbmPsdContFact.cxx
   CbmMcbm2018PsdPar.cxx
-)
+  )
+
+set(LIBRARY_NAME CbmPsdBase)
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES 
+  FairRoot::ParBase
+  )
 
-set(LINKDEF CbmPsdBaseLinkDef.h)
-Set(LIBRARY_NAME CbmPsdBase)
-Set(DEPENDENCIES ParBase Base)
+set(PRIVATE_DEPENDENCIES 
+  FairLogger::FairLogger 
+  ROOT::Core 
+  )
 
-GENERATE_LIBRARY()
+generate_cbm_library()
diff --git a/core/detectors/rich/CMakeLists.txt b/core/detectors/rich/CMakeLists.txt
index bebe61a875dda0c41d9f565fdfcce83b4321eaca..16526cea17655c6eff5776b0e89ec87460c1e974 100644
--- a/core/detectors/rich/CMakeLists.txt
+++ b/core/detectors/rich/CMakeLists.txt
@@ -1,40 +1,14 @@
 set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/utils
-
-  ${CBMDATA_DIR}
-  ${CBMDATA_DIR}/rich
-  ${CBMDATA_DIR}/tof
-  ${CBMDATA_DIR}/global
-  ${CBMDATA_DIR}/base
-
-  ${CBMBASE_DIR}
-  ${CBMBASE_DIR}/draw
-)
-
-include_directories(${INCLUDE_DIRECTORIES})
-
-set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES}
-  ${Boost_INCLUDE_DIR}
-)
-
-include_directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-set(LINK_DIRECTORIES
-  ${ROOT_LIBRARY_DIR}
-  ${FAIRROOT_LIBRARY_DIR}
-  ${Boost_LIBRARY_DIRS}
-)
-
-link_directories(${LINK_DIRECTORIES})
+  )
 
 set(SRCS
   CbmRichPmt.cxx
   CbmRichEventDisplay.cxx
   CbmRichContFact.cxx
   CbmMcbm2018RichPar.cxx
-)
+  )
 
 set(NO_DICT_SRCS
   CbmRichElectronIdAnn.cxx
@@ -42,7 +16,8 @@ set(NO_DICT_SRCS
   CbmRichDigiMapManager.cxx
   CbmRichMCbmDigiMapManager.cxx
   utils/CbmRichUtil.cxx
-)
+  )
+
 
 IF (SSE_FOUND)
   ADD_DEFINITIONS(-DHAVE_SSE)
@@ -51,14 +26,32 @@ ELSE (SSE_FOUND)
   SET_SOURCE_FILES_PROPERTIES(${SRCS} PROPERTIES COMPILE_FLAGS "-O3")
 ENDIF (SSE_FOUND)
 
-set(LINKDEF  CbmRichBaseLinkDef.h)
-
-Set(LIBRARY_NAME CbmRichBase)
-Set(DEPENDENCIES CbmData CbmBase Base MLP)
-
-GENERATE_LIBRARY()
-
-Install(FILES
+set(LIBRARY_NAME CbmRichBase)
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES 
+  CbmData
+  FairRoot::Base
+  FairRoot::ParBase
+  ROOT::Core 
+  CbmBase
+  ROOT::MathCore 
+  )
+
+set(PRIVATE_DEPENDENCIES 
+  FairLogger::FairLogger 
+  ROOT::EG 
+  ROOT::Geom 
+  ROOT::Hist
+  ROOT::RIO
+  ROOT::MLP
+  )
+
+generate_cbm_library()
+
+
+# Install file which has no corresponding source file
+install(FILES
         CbmRichRecGeoPar.h
         DESTINATION include
        )
+
diff --git a/core/detectors/sts/CMakeLists.txt b/core/detectors/sts/CMakeLists.txt
index 99baaf2cb8439e6c73e9c90fe3e7cf19dc88468f..423efe49eb6177ea0fb627cb9001ec2547a307b2 100644
--- a/core/detectors/sts/CMakeLists.txt
+++ b/core/detectors/sts/CMakeLists.txt
@@ -1,70 +1,27 @@
-# CMakeList file for library libStsBase
-# Last update: V. Friese, 16.03.2020
-
-
-# -----   Specify library name   --------------------------
-Set(LIBRARY_NAME CbmStsBase)
-# ---------------------------------------------------------
-
-
-# -----  Specify sources for compilation   ----------------
-set(SRCS
-CbmStsContFact.cxx
-CbmStsElement.cxx
-CbmStsModule.cxx
-CbmStsParAsic.cxx
-CbmStsParModule.cxx
-CbmStsParSensor.cxx
-CbmStsParSensorCond.cxx
-CbmStsParSetModule.cxx
-CbmStsParSetSensor.cxx
-CbmStsParSetSensorCond.cxx
-CbmStsParSim.cxx
-CbmMcbm2018StsPar.cxx
-CbmStsPhysics.cxx
-CbmStsSensor.cxx
-CbmStsSetup.cxx
-CbmStsStation.cxx
-CbmStsTrackingInterface.cxx
-)
-# -----  End of sources   ---------------------------------
-
-
-
-# ----  Specify include directories -----------------------
 set(INCLUDE_DIRECTORIES
-${CMAKE_CURRENT_SOURCE_DIR}
-
-${CBMBASE_DIR}
-
-${CBMDATA_DIR}
-${CBMDATA_DIR}/sts
-${CBMDATA_DIR}/global
-)
-
-set(SYSTEM_INCLUDE_DIRECTORIES
-${BASE_INCLUDE_DIRECTORIES}
-)
-# ----  End of include directories ------------------------
-
-
-# ----  Specify link directories --------------------------
-set(LINK_DIRECTORIES
-${ROOT_LIBRARY_DIR}
-${FAIRROOT_LIBRARY_DIR}
-${Boost_LIBRARY_DIRS}
-)
-# -----  End of link directories   ------------------------
+  ${CMAKE_CURRENT_SOURCE_DIR}
+  )
 
 
-# -----   Specify library dependences   -------------------
-Set(DEPENDENCIES CbmBase CbmData)
-# ---------------------------------------------------------
-
-
-# -----  Specify LinkDef file   ---------------------------
-set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
-# ---------------------------------------------------------
+set(SRCS
+  CbmStsContFact.cxx
+  CbmStsElement.cxx
+  CbmStsModule.cxx
+  CbmStsParAsic.cxx
+  CbmStsParModule.cxx
+  CbmStsParSensor.cxx
+  CbmStsParSensorCond.cxx
+  CbmStsParSetModule.cxx
+  CbmStsParSetSensor.cxx
+  CbmStsParSetSensorCond.cxx
+  CbmStsParSim.cxx
+  CbmMcbm2018StsPar.cxx
+  CbmStsPhysics.cxx
+  CbmStsSensor.cxx
+  CbmStsSetup.cxx
+  CbmStsStation.cxx
+  CbmStsTrackingInterface.cxx
+  )
 
 
 # ---- Enable OpenMP  -------------------------------------
@@ -75,36 +32,33 @@ if (OPENMP_FOUND)
 endif()
 # ---------------------------------------------------------
 
-
-# -----  Let cmake do the job   ---------------------------
-include_directories( ${INCLUDE_DIRECTORIES})
-include_directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-link_directories( ${LINK_DIRECTORIES})
-GENERATE_LIBRARY()
-# ---------------------------------------------------------
-
-
-# -----   Install headers   -------------------------------
-Install(
-FILES CbmStsContFact.h
-	  CbmStsDefs.h
-	  CbmStsElement.h
-	  CbmStsModule.h
-	  CbmStsParAsic.h
-	  CbmStsParModule.h
-	  CbmStsParSensor.h
-	  CbmStsParSensorCond.h
-	  CbmStsParSetModule.h
-	  CbmStsParSetSensor.h
-	  CbmStsParSetSensorCond.h
-	  CbmStsParSim.h
-	  CbmStsPhysics.h
-	  CbmStsSensor.h
-	  CbmStsSetup.h
-	  CbmStsStation.h
-    CbmStsTrackingInterface.h
-DESTINATION include
-)
-# ---------------------------------------------------------
-
+set(LIBRARY_NAME CbmStsBase)
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES 
+  FairRoot::Base
+  FairRoot::ParBase
+  CbmBase
+  ROOT::Core 
+  ROOT::Geom 
+  ROOT::Gpad 
+  ROOT::Hist 
+  ROOT::MathCore 
+  ROOT::Physics
+  )
+
+set(PRIVATE_DEPENDENCIES 
+  FairLogger::FairLogger
+  CbmData
+  ROOT::Graf 
+  ROOT::MLP 
+  ROOT::Tree
+  )
+
+generate_cbm_library()
+
+# Install file which has no corresponding source file
+install(FILES
+        CbmStsDefs.h
+        DESTINATION include
+       )
 
diff --git a/core/detectors/tof/CMakeLists.txt b/core/detectors/tof/CMakeLists.txt
index 8691eaa5cde62c235c29861fbb5a62157ac86612..c527e3a5e5ded8a30b3dbc8c014f58ce437452ab 100644
--- a/core/detectors/tof/CMakeLists.txt
+++ b/core/detectors/tof/CMakeLists.txt
@@ -1,26 +1,6 @@
 set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}
-  ${CBMBASE_DIR}
-  ${CBMDATA_DIR}
-  ${CBMDATA_DIR}/tof
-  ${CBMDATA_DIR}/raw
-)
-
-include_directories(${INCLUDE_DIRECTORIES})
-
-set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES}
-)
-
-include_directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-set(LINK_DIRECTORIES
-  ${ROOT_LIBRARY_DIR}
-  ${FAIRROOT_LIBRARY_DIR}
-  ${Boost_LIBRARY_DIRS}
-)
-
-link_directories(${LINK_DIRECTORIES})
+  )
 
 set(SRCS
   CbmTofCell.cxx
@@ -32,12 +12,28 @@ set(SRCS
   CbmTofGeoHandler.cxx
   CbmTofTrackingInterface.cxx
   TTrbHeader.cxx
-)
-
-set(LINKDEF CbmTofBaseLinkDef.h)
-Set(LIBRARY_NAME CbmTofBase)
-Set(DEPENDENCIES
-    CbmData Base
-)
-
-GENERATE_LIBRARY()
+  )
+
+set(LIBRARY_NAME CbmTofBase)
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES 
+  CbmData
+  FairRoot::Base
+  FairRoot::ParBase
+  ROOT::Core 
+  ROOT::Geom 
+  ROOT::MathCore 
+  )
+
+set(PRIVATE_DEPENDENCIES 
+  CbmBase
+  FairLogger::FairLogger 
+  ROOT::Hist
+  ROOT::RIO
+  )
+
+set(INTERFACE_DEPENDENCIES
+  ROOT::Graf3d
+  )
+
+generate_cbm_library()
diff --git a/core/detectors/trd/CMakeLists.txt b/core/detectors/trd/CMakeLists.txt
index e17ffbf4637c5afe994985ee250a8ad8eda504ef..e746a1b64a2a038f3061a94cfc4e0b72e8fe1e45 100644
--- a/core/detectors/trd/CMakeLists.txt
+++ b/core/detectors/trd/CMakeLists.txt
@@ -1,83 +1,78 @@
-# Create a library called "libTrd" which includes the source files given in
-# the array .
-# The extension is already found.  Any number of sources could be listed here.
-
-Set(INCLUDE_DIRECTORIES
-${CMAKE_CURRENT_SOURCE_DIR}
-${CBMBASE_DIR}
-${CBMDATA_DIR}
-${CBMDATA_DIR}/trd
-)
-
-Include_Directories( ${INCLUDE_DIRECTORIES})
-
-Set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES}
-)
-
-Include_Directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-set(LINK_DIRECTORIES
-${FAIRROOT_LIBRARY_DIR}
-${ROOT_LIBRARY_DIR}
-${Boost_LIBRARY_DIRS}
-)
-
-link_directories( ${LINK_DIRECTORIES})
+set(INCLUDE_DIRECTORIES
+  ${CMAKE_CURRENT_SOURCE_DIR}
+  )
 
 set(SRCS
-CbmTrdGas.cxx
-CbmTrdContFact.cxx
-CbmTrdParManager.cxx
-CbmTrdModuleAbstract.cxx
-CbmMcbm2020TrdTshiftPar.cxx
-CbmTrdParSet.cxx
-CbmTrdParSetAsic.cxx
-CbmTrdParSetGas.cxx
-CbmTrdParSetGain.cxx
-CbmTrdParSetGeo.cxx
-CbmTrdParSetDigi.cxx
-CbmTrdParMod.cxx
-CbmTrdParAsic.cxx
-CbmTrdParSpadic.cxx
-CbmTrdSpadic.cxx
-CbmTrdFASP.cxx
-CbmTrdParFasp.cxx
-CbmTrdParModDigi.cxx
-CbmTrdParModGas.cxx
-CbmTrdParModGain.cxx
-CbmTrdParModGeo.cxx
-CbmTrdTrackingInterface.cxx
-#tools
-CbmTrdGeoHandler.cxx
-CbmTrdUtils.cxx
-CbmTrddEdxUtils.cxx
-CbmTrdHardwareSetupR.cxx
-CbmTrdRadiator.cxx
-)
+  CbmTrdGas.cxx
+  CbmTrdContFact.cxx
+  CbmTrdParManager.cxx
+  CbmTrdModuleAbstract.cxx
+  CbmMcbm2020TrdTshiftPar.cxx
+  CbmTrdParSet.cxx
+  CbmTrdParSetAsic.cxx
+  CbmTrdParSetGas.cxx
+  CbmTrdParSetGain.cxx
+  CbmTrdParSetGeo.cxx
+  CbmTrdParSetDigi.cxx
+  CbmTrdParMod.cxx
+  CbmTrdParAsic.cxx
+  CbmTrdParSpadic.cxx
+  CbmTrdSpadic.cxx
+  CbmTrdFASP.cxx
+  CbmTrdParFasp.cxx
+  CbmTrdParModDigi.cxx
+  CbmTrdParModGas.cxx
+  CbmTrdParModGain.cxx
+  CbmTrdParModGeo.cxx
+  CbmTrdTrackingInterface.cxx
+  #tools
+  CbmTrdGeoHandler.cxx
+  CbmTrdUtils.cxx
+  CbmTrddEdxUtils.cxx
+  CbmTrdHardwareSetupR.cxx
+  CbmTrdRadiator.cxx
+  )
+
 
 IF (SSE_FOUND)
   ADD_DEFINITIONS(-DHAVE_SSE)
   SET_SOURCE_FILES_PROPERTIES(${SRCS} PROPERTIES COMPILE_FLAGS
-  "-msse -O3")
+    "-msse -O3")
   Message(STATUS "TRD BASE will be compiled with SSE support")
 ELSE (SSE_FOUND)
   Message(STATUS "TRD BASE will be compiled without SSE support")
   SET_SOURCE_FILES_PROPERTIES(${SRCS} PROPERTIES COMPILE_FLAGS
-  "-O3")
+    "-O3")
 ENDIF (SSE_FOUND)
 
 
+set(LIBRARY_NAME CbmTrdBase)
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+#set(DEPENDENCIES CbmBase CbmData)
+set(PUBLIC_DEPENDENCIES 
+  CbmData
+  FairRoot::Base
+  FairRoot::ParBase
+  ROOT::Core 
+  ROOT::Hist 
+  ROOT::MathCore 
+  ROOT::Physics 
+  ROOT::RIO
+  )
+
+set(PRIVATE_DEPENDENCIES   
+  FairLogger::FairLogger 
+  CbmBase
+  ROOT::Geom 
+  ROOT::Gpad 
+  ROOT::Graf
+  )
 
-set(LINKDEF CbmTrdBaseLinkDef.h)
-Set(LIBRARY_NAME CbmTrdBase)
-Set(DEPENDENCIES
-    CbmBase Base
-)
 
-GENERATE_LIBRARY()
+generate_cbm_library()
 
-#Install files without a corresponding source file
-Install(FILES CbmTrdDefs.h
-  DESTINATION include
-)
+# Install file which has no corresponding source file
+install(FILES
+        CbmTrdDefs.h
+        DESTINATION include
+       )
diff --git a/core/eventdisplay/CMakeLists.txt b/core/eventdisplay/CMakeLists.txt
index 45b42afd86b0eef8b2d79b515250f614f088cae0..2457d027c43a020ca1cc37fcc057af0f6912e963 100644
--- a/core/eventdisplay/CMakeLists.txt
+++ b/core/eventdisplay/CMakeLists.txt
@@ -1,49 +1,37 @@
 set(INCLUDE_DIRECTORIES
-${CMAKE_CURRENT_SOURCE_DIR}
-
-${CBMBASE_DIR}
-
-${CBMDATA_DIR}
-${CBMDATA_DIR}/sts
-${CBMDATA_DIR}/trd
-${CBMDATA_DIR}/tof
-${CBMDATA_DIR}/rich
-${CBMDATA_DIR}/global
-
-${CMAKE_SOURCE_DIR}/core/detectors/trd
-)
-
-include_directories( ${INCLUDE_DIRECTORIES})
-
-Set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES} 
-)
-
-Include_Directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-
-set(LINK_DIRECTORIES
-${ROOT_LIBRARY_DIR}
-${FAIRROOT_LIBRARY_DIR}
-${Boost_LIBRARY_DIRS}
-) 
-
-link_directories( ${LINK_DIRECTORIES})
+  ${CMAKE_CURRENT_SOURCE_DIR}
+  )
 
 set(SRCS
-CbmTrdDigiDraw.cxx
-CbmPixelHitSetDraw.cxx
-CbmEvDisTracks.cxx
-CbmRecoTracks.cxx
-CbmPointSetArray.cxx
-CbmPointSetArrayDraw.cxx
-CbmPointSetArrayEditor.cxx
-)
-
-set(LINKDEF  CbmDisplayLinkDef.h)
-Set(LIBRARY_NAME CbmDisplay)
-Set(DEPENDENCIES
-    CbmData EventDisplay Base CbmTrdBase
-)
-
-GENERATE_LIBRARY()
+  CbmTrdDigiDraw.cxx
+  CbmPixelHitSetDraw.cxx
+  CbmEvDisTracks.cxx
+  CbmRecoTracks.cxx
+  CbmPointSetArray.cxx
+  CbmPointSetArrayDraw.cxx
+  CbmPointSetArrayEditor.cxx
+  )
+
+
+set(LIBRARY_NAME CbmDisplay)
+set(LINKDEF  ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES
+  FairRoot::Base
+  FairRoot::EventDisplay
+  ROOT::Core
+  ROOT::Eve
+  ROOT::Ged
+  ROOT::Gui
+  )
+
+set(PRIVATE_DEPENDENCIES
+  CbmData
+  CbmTrdBase
+  FairRoot::ParBase
+  ROOT::EG
+  ROOT::Gpad
+  ROOT::Graf3d
+  ROOT::Physics
+  )
+
+generate_cbm_library()
diff --git a/core/field/CMakeLists.txt b/core/field/CMakeLists.txt
index 64e45cab2b39802191292e0598ea360dfdeea237..54677ff7ef21e4074cb1c664992fc687b50a9a4d 100644
--- a/core/field/CMakeLists.txt
+++ b/core/field/CMakeLists.txt
@@ -1,21 +1,7 @@
 set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}
-)
+  )
 
-include_directories(${INCLUDE_DIRECTORIES})
-
-set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES} 
-)
-
-include_directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-set(LINK_DIRECTORIES
-  ${ROOT_LIBRARY_DIR}
-  ${FAIRROOT_LIBRARY_DIR}
-)
- 
-link_directories(${LINK_DIRECTORIES})
 
 set(SRCS
   CbmFieldConst.cxx     
@@ -30,13 +16,22 @@ set(SRCS
   CbmFieldCreator.cxx 
   CbmFieldMapDistorted.cxx       
   CbmFieldMapSym1.cxx     
-)
+  )
+
 
-set(LINKDEF CbmFieldLinkDef.h)
-Set(LIBRARY_NAME CbmField)
-Set(DEPENDENCIES
-    Base 
-)
+set(LIBRARY_NAME CbmField)
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES  
+  FairRoot::Base
+  FairRoot::ParBase
+  ROOT::Core  
+  )
 
-GENERATE_LIBRARY()
+set(PRIVATE_DEPENDENCIES 
+  ROOT::MathCore 
+  ROOT::RIO 
+  ROOT::Hist
+  ${VMCLIB}
+  )
 
+generate_cbm_library()
diff --git a/core/qa/CMakeLists.txt b/core/qa/CMakeLists.txt
index 04d6c2b8ddaf39a615caba849bc4e2da2caee50b..5a87997b4e0e2e76b1e004a34fae764690ace362 100644
--- a/core/qa/CMakeLists.txt
+++ b/core/qa/CMakeLists.txt
@@ -1,39 +1,26 @@
-Set(INCLUDE_DIRECTORIES
-${CMAKE_CURRENT_SOURCE_DIR}
-)
-
-Include_Directories( ${INCLUDE_DIRECTORIES})
-
-Set(SYSTEM_INCLUDE_DIRECTORIES
-  ${BASE_INCLUDE_DIRECTORIES} 
-)
-
-Include_Directories(SYSTEM ${SYSTEM_INCLUDE_DIRECTORIES})
-
-set(LINK_DIRECTORIES
-${ROOT_LIBRARY_DIR}
-${FAIRROOT_LIBRARY_DIR}
-${Boost_LIBRARY_DIRS}
-)
- 
-link_directories( ${LINK_DIRECTORIES})
+set(INCLUDE_DIRECTORIES
+  ${CMAKE_CURRENT_SOURCE_DIR}
+  )
 
 set(SRCS
-CbmQaCanvas.cxx
-CbmQaPie.cxx
-CbmQaHist.cxx
-CbmQaTable.cxx
-)
-
-set(HEADERS
-CbmQaCanvas.h
-CbmQaPie.h
-CbmQaHist.h
-CbmQaTable.h
-)
-
-set(LINKDEF CbmQaBaseLinkDef.h)
-Set(LIBRARY_NAME CbmQaBase)
-Set(DEPENDENCIES Hist Gpad)
-
-GENERATE_LIBRARY()
+  CbmQaCanvas.cxx
+  CbmQaPie.cxx
+  CbmQaHist.cxx
+  CbmQaTable.cxx
+  )
+
+
+set(LIBRARY_NAME CbmQaBase)
+set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
+set(PUBLIC_DEPENDENCIES
+  FairLogger::FairLogger
+  ROOT::Core
+  ROOT::Gpad
+  ROOT::Hist
+  )
+
+set(INTERFACE_DEPENDENCIES
+  ROOT::Graf
+  )
+
+generate_cbm_library()