diff --git a/CMakeLists.txt b/CMakeLists.txt
index 68edd096e21fe316e24cdf8bd7e32455a2ae8658..6a11bf583b015983b2adbe30c0f652443f0511a5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,6 +18,9 @@ list(APPEND CMAKE_MODULE_PATH ${dune-common_MODULE_PATH}
 #include the dune macros
 include(DuneMacros)
 
+# deactivate global include-directories
+dune_policy(SET DP_DEFAULT_INCLUDE_DIRS NEW)
+
 # start a dune project with information from dune.module
 dune_project()
 
@@ -25,6 +28,9 @@ dune_project()
 dune_add_library(dunegrid EXPORT_NAME Grid)
 target_link_libraries(dunegrid PUBLIC ${DUNE_LIBS})
 
+# set include directories to target
+dune_default_include_directories(dunegrid PUBLIC)
+
 # create a dune library for the albertagrid
 if(Alberta_FOUND)
   foreach(_dim ${ALBERTA_WORLD_DIMS})
diff --git a/doc/recipes/CMakeLists.txt b/doc/recipes/CMakeLists.txt
index 0d3b2c441ed9eedbbea9be8a87bfc47b95b4bb04..9b4c64ec62c9623a01863aa6b643c49555987225 100644
--- a/doc/recipes/CMakeLists.txt
+++ b/doc/recipes/CMakeLists.txt
@@ -2,5 +2,5 @@
 # SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 
 
-dune_add_test(SOURCES recipe-iterate-over-grid.cc)
-dune_add_test(SOURCES recipe-integration.cc)
+dune_add_test(SOURCES recipe-iterate-over-grid.cc LINK_LIBRARIES Dune::Grid)
+dune_add_test(SOURCES recipe-integration.cc LINK_LIBRARIES Dune::Grid)
diff --git a/dune/grid/albertagrid/test/CMakeLists.txt b/dune/grid/albertagrid/test/CMakeLists.txt
index 9b505979a588dbac0a1c6c18ed73d40b7f1b9c8c..20d71f055fa7e4e10a0ba805269bd9abf12292e1 100644
--- a/dune/grid/albertagrid/test/CMakeLists.txt
+++ b/dune/grid/albertagrid/test/CMakeLists.txt
@@ -3,7 +3,7 @@
 
 if(Alberta_FOUND)
   add_executable(test-alberta3d-refine test-alberta3d-refine.cc)
-  target_link_libraries(test-alberta3d-refine PRIVATE dunegrid)
+  target_link_libraries(test-alberta3d-refine PRIVATE Dune::Grid)
   add_dune_alberta_flags(test-alberta3d-refine WORLDDIM 3)
   dune_add_test(TARGET test-alberta3d-refine)
 endif()
diff --git a/dune/grid/common/test/CMakeLists.txt b/dune/grid/common/test/CMakeLists.txt
index c79d165e625c05aa4d84884962322fa4346a6914..ca3e7157b93a1e76d9e92401c5c123c1928c290a 100644
--- a/dune/grid/common/test/CMakeLists.txt
+++ b/dune/grid/common/test/CMakeLists.txt
@@ -1,5 +1,8 @@
 # SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
 # SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 
-dune_add_test(SOURCES scsgmappertest.cc LINK_LIBRARIES dunegrid)
-dune_add_test(SOURCES mcmgmappertest.cc LINK_LIBRARIES dunegrid)
+# Link all test targets in this directory against Dune::Grid
+link_libraries(Dune::Grid)
+
+dune_add_test(SOURCES scsgmappertest.cc)
+dune_add_test(SOURCES mcmgmappertest.cc)
diff --git a/dune/grid/io/file/dgfparser/test/CMakeLists.txt b/dune/grid/io/file/dgfparser/test/CMakeLists.txt
index 5eacaa07c8b28c217eac8ec78d023b61c85f1db7..ad6c6980482b087103822d91a2409758be490a95 100644
--- a/dune/grid/io/file/dgfparser/test/CMakeLists.txt
+++ b/dune/grid/io/file/dgfparser/test/CMakeLists.txt
@@ -1,28 +1,27 @@
 # SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
 # SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 
+# Link all test targets in this directory against Dune::Grid
+link_libraries(Dune::Grid)
+
 dune_add_test(NAME test-dgf-yasp
               SOURCES test-dgf-yasp.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\"
              )
 
 dune_add_test(NAME test-dgf-yasp-offset
               SOURCES test-dgf-yasp.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\"
                                   TESTCOORDINATES
               CMD_ARGS ${PROJECT_SOURCE_DIR}/doc/grids/dgf/test2d_offset.dgf)
 
 dune_add_test(NAME test-dgf-oned
               SOURCES test-dgf-oned.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\"
              )
 
 if(Alberta_FOUND)
   add_executable(test-dgf-alberta test-dgf-alberta.cc)
-  target_link_libraries(test-dgf-alberta PRIVATE dunegrid)
   add_dune_alberta_flags(test-dgf-alberta WORLDDIM 2)
   target_compile_definitions(test-dgf-alberta PUBLIC
     DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\")
@@ -31,12 +30,10 @@ endif()
 
 dune_add_test(NAME test-dgf-ug
               SOURCES test-dgf-ug.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\"
               CMAKE_GUARD dune-uggrid_FOUND)
 
 dune_add_test(NAME test-dgf-gmsh-ug
               SOURCES test-dgf-ug.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\" DGFTEST_USE_GMSH=1
               CMAKE_GUARD dune-uggrid_FOUND)
diff --git a/dune/grid/io/file/test/CMakeLists.txt b/dune/grid/io/file/test/CMakeLists.txt
index a939ba5d9ed748f37bba6b31031f2a72d633aebd..a4f3a02c786010b4a12d63a589e81209cf6ec2bd 100644
--- a/dune/grid/io/file/test/CMakeLists.txt
+++ b/dune/grid/io/file/test/CMakeLists.txt
@@ -7,6 +7,9 @@
 # be done more nicely.
 #
 
+# Link all test targets in this directory against Dune::Grid
+link_libraries(Dune::Grid)
+
 dune_add_test(SOURCES conformvolumevtktest.cc)
 
 dune_add_test(SOURCES gnuplottest.cc)
@@ -34,33 +37,28 @@ if(TARGET Python3::Python)
 endif()
 
 dune_add_test(SOURCES starcdreadertest.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\"
               CMAKE_GUARD dune-uggrid_FOUND)
 
 # the gmsh tests
 dune_add_test(NAME gmshtest-onedgrid
               SOURCES gmshtest.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS GMSH_ONEDGRID
                                   DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\")
 
 dune_add_test(NAME gmshtest-uggrid
               SOURCES gmshtest.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS GMSH_UGGRID
                                   DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\"
               CMAKE_GUARD dune-uggrid_FOUND)
 
 if(Alberta_FOUND)
   add_executable(gmshtest-alberta2d gmshtest.cc)
-  target_link_libraries(gmshtest-alberta2d PRIVATE dunegrid)
   add_dune_alberta_flags(gmshtest-alberta2d WORLDDIM 2)
   target_compile_definitions(gmshtest-alberta2d PUBLIC GMSH_ALBERTAGRID DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\")
   dune_add_test(TARGET gmshtest-alberta2d)
 
   add_executable(gmshtest-alberta3d gmshtest.cc)
-  target_link_libraries(gmshtest-alberta3d PRIVATE dunegrid)
   add_dune_alberta_flags(gmshtest-alberta3d WORLDDIM 3)
   target_compile_definitions(gmshtest-alberta3d PUBLIC GMSH_ALBERTAGRID DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\")
   dune_add_test(TARGET gmshtest-alberta3d)
diff --git a/dune/grid/test/CMakeLists.txt b/dune/grid/test/CMakeLists.txt
index d3862750817c9ee7df96d2e4d4dbf955c85c339a..77f558b47b44e706a072544cbd3a6a0da3f71e32 100644
--- a/dune/grid/test/CMakeLists.txt
+++ b/dune/grid/test/CMakeLists.txt
@@ -3,13 +3,15 @@
 
 add_subdirectory(yasp)
 
+# Link all test targets in this directory against Dune::Grid
+link_libraries(Dune::Grid)
+
 dune_add_test(SOURCES test-concepts.cc)
 
 dune_add_test(SOURCES geometrygrid-coordfunction-copyconstructor.cc)
 
 dune_add_test(NAME test-geogrid-yaspgrid
               SOURCES test-geogrid.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS COORDFUNCTION=IdenticalCoordFunction<double,2>
                                   CACHECOORDFUNCTION=0
                                   DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\"
@@ -17,7 +19,6 @@ dune_add_test(NAME test-geogrid-yaspgrid
 
 dune_add_test(NAME test-geogrid-uggrid
               SOURCES test-geogrid.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS COORDFUNCTION=IdenticalCoordFunction<double,2>
                                   CACHECOORDFUNCTION=0
                                   DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\"
@@ -28,8 +29,7 @@ dune_add_test(SOURCES test-gridinfo.cc)
 
 dune_add_test(SOURCES test-identitygrid.cc)
 
-dune_add_test(SOURCES test-oned.cc
-              LINK_LIBRARIES dunegrid)
+dune_add_test(SOURCES test-oned.cc)
 
 dune_add_test(SOURCES test-mcmg-geogrid.cc)
 
@@ -38,22 +38,18 @@ dune_add_test(SOURCES testiteratorranges.cc)
 dune_add_test(SOURCES test-hierarchicsearch.cc)
 
 dune_add_test(SOURCES test-ug.cc
-              LINK_LIBRARIES dunegrid
               COMPILE_DEFINITIONS DUNE_GRID_EXAMPLE_GRIDS_PATH=\"${PROJECT_SOURCE_DIR}/doc/grids/\"
               CMAKE_GUARD dune-uggrid_FOUND)
 
 dune_add_test(SOURCES test-parallel-ug.cc
-              LINK_LIBRARIES dunegrid
               CMAKE_GUARD dune-uggrid_FOUND
               MPI_RANKS 1 2 3 4 8
               TIMEOUT 300)
 
 dune_add_test(SOURCES test-loadbalancing.cc
-              LINK_LIBRARIES dunegrid
               CMAKE_GUARD dune-uggrid_FOUND)
 
 dune_add_test(SOURCES issue-53-uggrid-intersections.cc
-              LINK_LIBRARIES dunegrid
               CMAKE_GUARD dune-uggrid_FOUND)
 
 # The alberta tests are only alibi-ported, until the  grid and world dimension
@@ -64,7 +60,6 @@ if(Alberta_FOUND)
     foreach(GRIDDIM RANGE 1 ${WORLDDIM})
       set(_test test-alberta-${GRIDDIM}-${WORLDDIM})
       add_executable(${_test} EXCLUDE_FROM_ALL test-alberta.cc)
-      target_link_libraries(${_test} PRIVATE dunegrid)
       add_dune_alberta_flags(${_test} WORLDDIM ${WORLDDIM})
       target_compile_definitions(${_test} PUBLIC
         GRIDDIM=${GRIDDIM}
diff --git a/dune/grid/test/yasp/CMakeLists.txt b/dune/grid/test/yasp/CMakeLists.txt
index ff0d993dcc1b50fb3648335293460cd89fd13e26..331dc9b5d14bce75d28b7366fb9aa31d9bb5a2fb 100644
--- a/dune/grid/test/yasp/CMakeLists.txt
+++ b/dune/grid/test/yasp/CMakeLists.txt
@@ -1,6 +1,9 @@
 # SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
 # SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 
+# Link all test targets in this directory against Dune::Grid
+link_libraries(Dune::Grid)
+
 dune_add_test(NAME test-yaspgrid-backuprestore-equidistant
               SOURCES test-yaspgrid-backuprestore-equidistant.cc
               MPI_RANKS 1 2
diff --git a/dune/grid/utility/test/CMakeLists.txt b/dune/grid/utility/test/CMakeLists.txt
index 8fdab178ef4a3711a653e049c9e35b29c298b450..e1ceefda5ea4cce45071c491cc0109339914de8f 100644
--- a/dune/grid/utility/test/CMakeLists.txt
+++ b/dune/grid/utility/test/CMakeLists.txt
@@ -1,17 +1,15 @@
 # SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
 # SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 
-dune_add_test(SOURCES globalindexsettest.cc
-              LINK_LIBRARIES dunegrid)
+# Link all test targets in this directory against Dune::Grid
+link_libraries(Dune::Grid)
 
-dune_add_test(SOURCES persistentcontainertest.cc
-              LINK_LIBRARIES dunegrid)
+dune_add_test(SOURCES globalindexsettest.cc)
 
-dune_add_test(SOURCES structuredgridfactorytest.cc
-              LINK_LIBRARIES dunegrid)
+dune_add_test(SOURCES persistentcontainertest.cc)
 
-dune_add_test(SOURCES tensorgridfactorytest.cc
-              LINK_LIBRARIES dunegrid)
+dune_add_test(SOURCES structuredgridfactorytest.cc)
 
-dune_add_test(SOURCES vertexordertest.cc
-              LINK_LIBRARIES dunegrid)
+dune_add_test(SOURCES tensorgridfactorytest.cc)
+
+dune_add_test(SOURCES vertexordertest.cc)