Move test_cmake_build target code into its subdirectory
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index bc98c76..945753f 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -198,59 +198,4 @@
 add_subdirectory(test_embed)
 
 # Test CMake build using functions and targets from subdirectory or installed location
-add_custom_target(test_cmake_build)
-if(NOT CMAKE_VERSION VERSION_LESS 3.1)
-  # 3.0 needed for interface library for subdirectory_target/installed_target
-  # 3.1 needed for cmake -E env for testing
-
-  include(CMakeParseArguments)
-  function(pybind11_add_build_test name)
-    cmake_parse_arguments(ARG "INSTALL" "" "" ${ARGN})
-
-    set(build_options "-DCMAKE_PREFIX_PATH=${PROJECT_BINARY_DIR}/mock_install"
-                      "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
-                      "-DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}"
-                      "-DPYBIND11_CPP_STANDARD=${PYBIND11_CPP_STANDARD}")
-    if(NOT ARG_INSTALL)
-      list(APPEND build_options "-DPYBIND11_PROJECT_DIR=${PROJECT_SOURCE_DIR}")
-    endif()
-
-    add_custom_target(test_${name} ${CMAKE_CTEST_COMMAND}
-      --quiet --output-log test_cmake_build/${name}.log
-      --build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/test_cmake_build/${name}"
-                       "${CMAKE_CURRENT_BINARY_DIR}/test_cmake_build/${name}"
-      --build-config Release
-      --build-noclean
-      --build-generator ${CMAKE_GENERATOR}
-      $<$<BOOL:${CMAKE_GENERATOR_PLATFORM}>:--build-generator-platform> ${CMAKE_GENERATOR_PLATFORM}
-      --build-makeprogram ${CMAKE_MAKE_PROGRAM}
-      --build-target check
-      --build-options ${build_options}
-    )
-    if(ARG_INSTALL)
-      add_dependencies(test_${name} mock_install)
-    endif()
-    add_dependencies(test_cmake_build test_${name})
-  endfunction()
-
-  pybind11_add_build_test(subdirectory_function)
-  pybind11_add_build_test(subdirectory_target)
-  if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy")
-    pybind11_add_build_test(subdirectory_embed)
-  endif()
-
-  if(PYBIND11_INSTALL)
-    add_custom_target(mock_install ${CMAKE_COMMAND}
-      "-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/mock_install"
-      -P "${PROJECT_BINARY_DIR}/cmake_install.cmake"
-    )
-
-    pybind11_add_build_test(installed_function INSTALL)
-    pybind11_add_build_test(installed_target INSTALL)
-    if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy")
-      pybind11_add_build_test(installed_embed INSTALL)
-    endif()
-  endif()
-endif()
-
-add_dependencies(check test_cmake_build)
+add_subdirectory(test_cmake_build)
diff --git a/tests/test_cmake_build/CMakeLists.txt b/tests/test_cmake_build/CMakeLists.txt
new file mode 100644
index 0000000..c9b5fcb
--- /dev/null
+++ b/tests/test_cmake_build/CMakeLists.txt
@@ -0,0 +1,58 @@
+add_custom_target(test_cmake_build)
+
+if(CMAKE_VERSION VERSION_LESS 3.1)
+  # 3.0 needed for interface library for subdirectory_target/installed_target
+  # 3.1 needed for cmake -E env for testing
+  return()
+endif()
+
+include(CMakeParseArguments)
+function(pybind11_add_build_test name)
+  cmake_parse_arguments(ARG "INSTALL" "" "" ${ARGN})
+
+  set(build_options "-DCMAKE_PREFIX_PATH=${PROJECT_BINARY_DIR}/mock_install"
+                    "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}"
+                    "-DPYTHON_EXECUTABLE:FILEPATH=${PYTHON_EXECUTABLE}"
+                    "-DPYBIND11_CPP_STANDARD=${PYBIND11_CPP_STANDARD}")
+  if(NOT ARG_INSTALL)
+    list(APPEND build_options "-DPYBIND11_PROJECT_DIR=${PROJECT_SOURCE_DIR}")
+  endif()
+
+  add_custom_target(test_${name} ${CMAKE_CTEST_COMMAND}
+    --quiet --output-log ${name}.log
+    --build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/${name}"
+                     "${CMAKE_CURRENT_BINARY_DIR}/${name}"
+    --build-config Release
+    --build-noclean
+    --build-generator ${CMAKE_GENERATOR}
+    $<$<BOOL:${CMAKE_GENERATOR_PLATFORM}>:--build-generator-platform> ${CMAKE_GENERATOR_PLATFORM}
+    --build-makeprogram ${CMAKE_MAKE_PROGRAM}
+    --build-target check
+    --build-options ${build_options}
+  )
+  if(ARG_INSTALL)
+    add_dependencies(test_${name} mock_install)
+  endif()
+  add_dependencies(test_cmake_build test_${name})
+endfunction()
+
+pybind11_add_build_test(subdirectory_function)
+pybind11_add_build_test(subdirectory_target)
+if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy")
+  pybind11_add_build_test(subdirectory_embed)
+endif()
+
+if(PYBIND11_INSTALL)
+  add_custom_target(mock_install ${CMAKE_COMMAND}
+    "-DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR}/mock_install"
+    -P "${PROJECT_BINARY_DIR}/cmake_install.cmake"
+  )
+
+  pybind11_add_build_test(installed_function INSTALL)
+  pybind11_add_build_test(installed_target INSTALL)
+  if(NOT ${PYTHON_MODULE_EXTENSION} MATCHES "pypy")
+    pybind11_add_build_test(installed_embed INSTALL)
+  endif()
+endif()
+
+add_dependencies(check test_cmake_build)