diff --git a/dune/common/parallel/benchmark/CMakeLists.txt b/dune/common/parallel/benchmark/CMakeLists.txt
index d6256d7b0fa66d64cd8bbed9e00fe9249d4d1bde..b9992ac87c5321c1698630556692e627c0c43760 100644
--- a/dune/common/parallel/benchmark/CMakeLists.txt
+++ b/dune/common/parallel/benchmark/CMakeLists.txt
@@ -2,7 +2,7 @@
 # SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
 
 add_executable(mpi_collective_benchmark EXCLUDE_FROM_ALL mpi_collective_benchmark.cc)
-dune_target_link_libraries(mpi_collective_benchmark PUBLIC "dunecommon")
+target_link_libraries(mpi_collective_benchmark PRIVATE Dune::Common)
 add_dune_mpi_flags(mpi_collective_benchmark)
 
 configure_file(options.ini options.ini COPYONLY)
diff --git a/dune/common/parallel/test/CMakeLists.txt b/dune/common/parallel/test/CMakeLists.txt
index 3695e30d48bf9c56fdad38032d39d1afe29b429e..ccd9faaaade0592c26d172cde583a2607777819a 100644
--- a/dune/common/parallel/test/CMakeLists.txt
+++ b/dune/common/parallel/test/CMakeLists.txt
@@ -1,19 +1,19 @@
 # SPDX-FileCopyrightInfo: 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::Common
+link_libraries(Dune::Common)
+
 dune_add_test(SOURCES communicationtest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 1 2 4
               TIMEOUT 300
               CMAKE_GUARD MPI_FOUND
               LABELS quick)
 
 dune_add_test(SOURCES indexsettest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES parmetistest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 3
               TIMEOUT 300
               CMAKE_GUARD "HAVE_MPI AND ParMETIS_FOUND"
@@ -22,18 +22,15 @@ add_dune_mpi_flags(parmetistest)
 add_dune_parmetis_flags(parmetistest)
 
 dune_add_test(SOURCES remoteindicestest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 1 2 4
               TIMEOUT 300
               CMAKE_GUARD HAVE_MPI
               LABELS quick)
 
 dune_add_test(SOURCES selectiontest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES syncertest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 1 2 4
               TIMEOUT 300
               CMAKE_GUARD HAVE_MPI
@@ -46,27 +43,23 @@ dune_add_test(SOURCES variablesizecommunicatortest.cc
               LABELS quick)
 
 dune_add_test(SOURCES mpidatatest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 2
               TIMEOUT 300
               LABELS quick)
 
 dune_add_test(SOURCES mpifuturetest.cc
-              LINK_LIBRARIES dunecommon
               CMAKE_GUARD MPI_FOUND
               MPI_RANKS 1 2 4
               TIMEOUT 300
               LABELS quick)
 
 dune_add_test(SOURCES mpipacktest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 2
               TIMEOUT 300
               CMAKE_GUARD HAVE_MPI
               LABELS quick)
 
 dune_add_test(SOURCES mpigatherscattertest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 2
               TIMEOUT 300
               CMAKE_GUARD MPI_FOUND
diff --git a/dune/common/simd/test/CMakeLists.txt b/dune/common/simd/test/CMakeLists.txt
index a7081cdb5bfc03f35499c2eff95f52bc28c3042e..e92833df6d485eb5fd674dd1d5d9183efa252abb 100644
--- a/dune/common/simd/test/CMakeLists.txt
+++ b/dune/common/simd/test/CMakeLists.txt
@@ -7,6 +7,9 @@
 # standardtest).
 include(DuneInstance)
 
+# Link all test targets in this directory against Dune::Common
+link_libraries(Dune::Common)
+
 set(TYPES
   char "unsigned char" "signed char"
   short int long "long long"
@@ -33,7 +36,6 @@ dune_instance_end()
 list(FILTER DUNE_INSTANCE_GENERATED INCLUDE REGEX [[\.cc$]])
 dune_add_test(NAME looptest
   SOURCES ${DUNE_INSTANCE_GENERATED}
-  LINK_LIBRARIES dunecommon
 )
 # no need to install looptest.hh, used by looptest*.cc only
 
@@ -58,7 +60,6 @@ dune_instance_end()
 list(FILTER DUNE_INSTANCE_GENERATED INCLUDE REGEX [[\.cc$]])
 dune_add_test(NAME standardtest
   SOURCES ${DUNE_INSTANCE_GENERATED}
-  LINK_LIBRARIES dunecommon
 )
 # no need to install standardtest.hh, used by standardtest*.cc only
 
@@ -84,7 +85,6 @@ dune_instance_end()
 list(FILTER DUNE_INSTANCE_GENERATED INCLUDE REGEX [[\.cc$]])
 dune_add_test(NAME vcarraytest
   SOURCES ${DUNE_INSTANCE_GENERATED}
-  LINK_LIBRARIES dunecommon
   CMAKE_GUARD Vc_FOUND
 )
 add_dune_vc_flags(vcarraytest)
@@ -107,7 +107,6 @@ dune_instance_end()
 list(FILTER DUNE_INSTANCE_GENERATED INCLUDE REGEX [[\.cc$]])
 dune_add_test(NAME vcvectortest
   SOURCES ${DUNE_INSTANCE_GENERATED}
-  LINK_LIBRARIES dunecommon
   CMAKE_GUARD Vc_FOUND
 )
 add_dune_vc_flags(vcvectortest)
diff --git a/dune/common/std/test/CMakeLists.txt b/dune/common/std/test/CMakeLists.txt
index 1d008b1904c3588b1fea36fd782dcc5cb24b1c46..e653c875fd488e9fd6e574adee3532263e72540c 100644
--- a/dune/common/std/test/CMakeLists.txt
+++ b/dune/common/std/test/CMakeLists.txt
@@ -1,26 +1,23 @@
 # SPDX-FileCopyrightInfo: 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::Common
+link_libraries(Dune::Common)
+
 dune_add_test(SOURCES accessorstest.cc
-              LABELS quick
-              LINK_LIBRARIES Dune::Common)
+              LABELS quick)
 
 dune_add_test(SOURCES extentstest.cc
-              LABELS quick
-              LINK_LIBRARIES Dune::Common)
+              LABELS quick)
 
 dune_add_test(SOURCES mappingtest.cc
-              LABELS quick
-              LINK_LIBRARIES Dune::Common)
+              LABELS quick)
 
 dune_add_test(SOURCES mdspantest.cc
-              LABELS quick
-              LINK_LIBRARIES Dune::Common)
+              LABELS quick)
 
 dune_add_test(SOURCES mdarraytest.cc
-              LABELS quick
-              LINK_LIBRARIES Dune::Common)
+              LABELS quick)
 
 dune_add_test(SOURCES spantest.cc
-              LABELS quick
-              LINK_LIBRARIES Dune::Common)
\ No newline at end of file
+              LABELS quick)
\ No newline at end of file
diff --git a/dune/common/test/CMakeLists.txt b/dune/common/test/CMakeLists.txt
index 78a39983298dc70bc22dc7d37833f237c071ea85..b1769dc2bde667959e09e1d0dbd51b4567b32b30 100644
--- a/dune/common/test/CMakeLists.txt
+++ b/dune/common/test/CMakeLists.txt
@@ -3,25 +3,24 @@
 
 include(DuneInstance)
 
+# Link all test targets in this directory against Dune::Common
+link_libraries(Dune::Common)
+
 dune_add_test(SOURCES arithmetictestsuitetest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES arraylisttest.cc
               LABELS quick)
 
 dune_add_test(SOURCES assertandreturntest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 dune_add_test(NAME assertandreturntest_compiletime_fail
               SOURCES assertandreturntest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "TEST_COMPILETIME_FAIL"
               EXPECT_COMPILE_FAIL
               LABELS quick)
 dune_add_test(NAME assertandreturntest_ndebug
               SOURCES assertandreturntest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "TEST_NDEBUG"
               LABELS quick)
 
@@ -29,7 +28,6 @@ dune_add_test(SOURCES autocopytest.cc
               LABELS quick)
 
 dune_add_test(SOURCES bigunsignedinttest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES bitsetvectortest.cc
@@ -37,19 +35,15 @@ dune_add_test(SOURCES bitsetvectortest.cc
 
 dune_add_test(SOURCES boundscheckingtest.cc
               COMPILE_DEFINITIONS DUNE_CHECK_BOUNDS=1
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 dune_add_test(SOURCES boundscheckingmvtest.cc
               COMPILE_DEFINITIONS DUNE_CHECK_BOUNDS=1
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 dune_add_test(SOURCES boundscheckingoptest.cc
               COMPILE_DEFINITIONS DUNE_CHECK_BOUNDS=1
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES calloncetest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES check_fvector_size.cc
@@ -69,32 +63,26 @@ dune_add_test(NAME check_fvector_size_fail2
 
 dune_add_test(NAME classnametest-demangled
               SOURCES classnametest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(NAME classnametest-fallback
               SOURCES classnametest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS DISABLE_CXA_DEMANGLE
               LABELS quick)
 
 dune_add_test(SOURCES concept.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES concepts.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES constexprifelsetest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES copyableoptionaltest.cc
               LABELS quick)
 
 dune_add_test(SOURCES debugaligntest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 # Generate files with instantiations, external declarations, and also the
@@ -112,73 +100,59 @@ dune_instance_end()
 list(FILTER DUNE_INSTANCE_GENERATED INCLUDE REGEX [[\.cc$]])
 dune_add_test(NAME debugalignsimdtest
               SOURCES ${DUNE_INSTANCE_GENERATED}
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES densematrixassignmenttest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 dune_add_test(NAME densematrixassignmenttest_fail0
               SOURCES densematrixassignmenttest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE0"
               EXPECT_COMPILE_FAIL
               LABELS quick)
 dune_add_test(NAME densematrixassignmenttest_fail1
               SOURCES densematrixassignmenttest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE1"
               EXPECT_COMPILE_FAIL
               LABELS quick)
 dune_add_test(NAME densematrixassignmenttest_fail2
               SOURCES densematrixassignmenttest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE2"
               EXPECT_COMPILE_FAIL
               LABELS quick)
 dune_add_test(NAME densematrixassignmenttest_fail3
               SOURCES densematrixassignmenttest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE3"
               EXPECT_COMPILE_FAIL
               LABELS quick)
 dune_add_test(NAME densematrixassignmenttest_fail4
               SOURCES densematrixassignmenttest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE4"
               EXPECT_COMPILE_FAIL
               LABELS quick)
 dune_add_test(NAME densematrixassignmenttest_fail5
               SOURCES densematrixassignmenttest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE5"
               EXPECT_COMPILE_FAIL
               LABELS quick)
 dune_add_test(NAME densematrixassignmenttest_fail6
               SOURCES densematrixassignmenttest.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE6"
               EXPECT_COMPILE_FAIL
               LABELS quick)
 
 dune_add_test(SOURCES densevectorassignmenttest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES diagonalmatrixtest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES dynmatrixtest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES dynvectortest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES densevectortest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES enumsettest.cc
@@ -188,16 +162,13 @@ dune_add_test(SOURCES filledarraytest.cc
               LABELS quick)
 
 dune_add_test(SOURCES fmatrixtest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 add_dune_vc_flags(fmatrixtest)
 
 dune_add_test(SOURCES fvectortest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES fvectorconversion1d.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES genericiterator_compile_fail.cc
@@ -205,7 +176,6 @@ dune_add_test(SOURCES genericiterator_compile_fail.cc
               LABELS quick)
 
 dune_add_test(SOURCES hybridutilitiestest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES indexediteratortest.cc
@@ -218,7 +188,6 @@ dune_add_test(SOURCES integersequencetest.cc
               LABELS quick)
 
 dune_add_test(SOURCES iscallabletest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES iteratorfacadetest2.cc
@@ -228,32 +197,26 @@ dune_add_test(SOURCES iteratorfacadetest.cc
               LABELS quick)
 
 dune_add_test(SOURCES lrutest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
-dune_add_test(SOURCES mathclassifierstest.cc
-              LINK_LIBRARIES dunecommon)
+dune_add_test(SOURCES mathclassifierstest.cc)
 
 dune_add_test(SOURCES metistest.cc
-              LINK_LIBRARIES dunecommon
               CMAKE_GUARD METIS_FOUND
               LABELS quick)
 add_dune_metis_flags(metistest)
 
 dune_add_test(SOURCES mpicommunicationtest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 1 2 4 8
               TIMEOUT 300
               LABELS quick)
 
 dune_add_test(SOURCES mpiguardtest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 1 2 4 8
               TIMEOUT 300
               LABELS quick)
 
 dune_add_test(SOURCES mpihelpertest.cc
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 1 2 4 8
               TIMEOUT 300
               LABELS quick)
@@ -261,57 +224,45 @@ dune_add_test(SOURCES mpihelpertest.cc
 dune_add_test(NAME mpihelpertest2
               SOURCES mpihelpertest.cc
               COMPILE_DEFINITIONS MPIHELPER_PREINITIALIZE
-              LINK_LIBRARIES dunecommon
               MPI_RANKS 1 2 4 8
               TIMEOUT 300
               LABELS quick)
 
 dune_add_test(SOURCES overloadsettest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(NAME parameterizedobjecttest
               SOURCES parameterizedobjecttest.cc parameterizedobjectfactorysingleton.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES parametertreelocaletest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES parametertreetest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES pathtest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES poolallocatortest.cc
               LABELS quick)
 
 dune_add_test(SOURCES powertest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES quadmathtest.cc
-              LINK_LIBRARIES dunecommon
               CMAKE_GUARD HAVE_QUADMATH)
 
 dune_add_test(SOURCES rangeutilitiestest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES referencehelpertest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES reservedvectortest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES scotchtest.cc
-              LINK_LIBRARIES dunecommon
               CMAKE_GUARD PTScotch_FOUND
               LABELS quick)
 
@@ -328,55 +279,46 @@ dune_add_test(SOURCES stdidentity.cc
               LABELS quick)
 
 dune_add_test(SOURCES stdchecktypes.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES streamoperatorstest.cc
               LABELS quick)
 
 dune_add_test(SOURCES streamtest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES stringutilitytest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES testdebugallocator.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(NAME testdebugallocator_fail1
               SOURCES testdebugallocator.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE1;EXPECTED_SIGNAL=SIGSEGV;EXPECTED_ALT_SIGNAL=SIGBUS"
               EXPECT_FAIL
               LABELS quick)
 
 dune_add_test(NAME testdebugallocator_fail2
               SOURCES testdebugallocator.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE2;EXPECTED_SIGNAL=SIGABRT"
               EXPECT_FAIL
               LABELS quick)
 
 dune_add_test(NAME testdebugallocator_fail3
               SOURCES testdebugallocator.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE3;EXPECTED_SIGNAL=SIGABRT"
               EXPECT_FAIL
               LABELS quick)
 
 dune_add_test(NAME testdebugallocator_fail4
               SOURCES testdebugallocator.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE4;DEBUG_ALLOCATOR_KEEP=1;EXPECTED_SIGNAL=SIGSEGV;EXPECTED_ALT_SIGNAL=SIGBUS"
               EXPECT_FAIL
               LABELS quick)
 
 dune_add_test(NAME testdebugallocator_fail5
               SOURCES testdebugallocator.cc
-              LINK_LIBRARIES dunecommon
               COMPILE_DEFINITIONS "FAILURE5;EXPECTED_SIGNAL=SIGSEGV;EXPECTED_ALT_SIGNAL=SIGBUS"
               EXPECT_FAIL
               LABELS quick)
@@ -385,7 +327,6 @@ dune_add_test(SOURCES testfloatcmp.cc
               LABELS quick)
 
 dune_add_test(SOURCES transposetest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES tupleutilitytest.cc
@@ -398,33 +339,27 @@ dune_add_test(SOURCES typeutilitytest.cc
               LABELS quick)
 
 dune_add_test(SOURCES typelisttest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES utilitytest.cc
               LABELS quick)
 
 dune_add_test(SOURCES eigenvaluestest.cc
-              LINK_LIBRARIES dunecommon
               CMAKE_GUARD LAPACK_FOUND
               LABELS quick)
 
 dune_add_test(SOURCES versiontest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES mathtest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick)
 
 dune_add_test(SOURCES vcexpectedimpltest.cc
-              LINK_LIBRARIES dunecommon
               LABELS quick
               CMAKE_GUARD Vc_FOUND)
 add_dune_vc_flags(vcexpectedimpltest)
 
-dune_add_test(SOURCES alignedallocatortest.cc
-              LINK_LIBRARIES dunecommon)
+dune_add_test(SOURCES alignedallocatortest.cc)
 
 install(
   FILES