diff --git a/CMakeLists.txt b/CMakeLists.txt
index 88bc141817cee1f1435ed8c8a659002b4580a087..efcc5b6b8e4578448f3cb87a1f1df0f91d8db012 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,10 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.15)
 
 project(CEPCSW)
 
+# setup some necessary envvar
+include(cmake/CEPCSWEnv.cmake)
+#
+
 find_package(ROOT COMPONENTS RIO Tree)
 
 find_package(Gaudi)
diff --git a/cmake/CEPCSWEnv.cmake b/cmake/CEPCSWEnv.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..1854ce60582ad2107eaa1bdd530d743d31835424
--- /dev/null
+++ b/cmake/CEPCSWEnv.cmake
@@ -0,0 +1,9 @@
+# This variable will be used by GaudiToolbox.cmake to generate the cepcswenv.sh
+
+set(RUN_SCRIPT_EXTRA_COMMANDS "${RUN_SCRIPT_EXTRA_COMMANDS}
+export CEPCSW_ROOT=${CMAKE_SOURCE_DIR}
+
+export DETCEPCV4ROOT=${CMAKE_SOURCE_DIR}/Detector/DetCEPCv4
+export DETCRDROOT=${CMAKE_SOURCE_DIR}/Detector/DetCRD
+export DETDRIFTCHAMBERROOT=${CMAKE_SOURCE_DIR}/Detector/DetDriftChamber
+")