diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst
index 2157ba5ba74507cb5063af81ad50223dfb8119a2..e07150af3d9a8bcb5afd2ee4868d43f4dd27ca04 100644
--- a/Help/manual/cmake-properties.7.rst
+++ b/Help/manual/cmake-properties.7.rst
@@ -46,7 +46,6 @@ Properties of Global Scope
    /prop_gbl/TARGET_SUPPORTS_SHARED_LIBS
    /prop_gbl/USE_FOLDERS
    /prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
-   /prop_gbl/XCODE_GENERATE_SCHEME
 
 .. _`Directory Properties`:
 
diff --git a/Help/manual/cmake-variables.7.rst b/Help/manual/cmake-variables.7.rst
index e4ee7255b618201c78d8d1d247e012cefc7a539e..9d8d596018864a1da816b1746e3e18e44c2a1c8f 100644
--- a/Help/manual/cmake-variables.7.rst
+++ b/Help/manual/cmake-variables.7.rst
@@ -87,6 +87,7 @@ Variables that Provide Information
    /variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA
    /variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE
    /variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
+   /variable/CMAKE_XCODE_GENERATE_SCHEME
    /variable/CMAKE_XCODE_PLATFORM_TOOLSET
    /variable/PROJECT-NAME_BINARY_DIR
    /variable/PROJECT-NAME_SOURCE_DIR
diff --git a/Help/release/dev/cmake-xcode-schemes.rst b/Help/release/dev/cmake-xcode-schemes.rst
index 27c19d7255648582e6be370e95d14bb227f2c1ab..81068ae53eac2ef36438666cfcdd8f86eab9d780 100644
--- a/Help/release/dev/cmake-xcode-schemes.rst
+++ b/Help/release/dev/cmake-xcode-schemes.rst
@@ -3,4 +3,4 @@ cmake-xcode-schemes
 
 * The :generator:`Xcode` generator got the ability to create schema files.
   This is still an experimental feature and can be activated by setting the
-  :prop_gbl:`XCODE_GENERATE_SCHEME` global property to a ``TRUE`` value.
+  :variable:`CMAKE_XCODE_GENERATE_SCHEME` variable to a ``TRUE`` value.
diff --git a/Help/prop_gbl/XCODE_GENERATE_SCHEME.rst b/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst
similarity index 82%
rename from Help/prop_gbl/XCODE_GENERATE_SCHEME.rst
rename to Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst
index be8b5b0631901df36cf26fd62f52dcead7367fdb..c9fcc92e0849bfa4eb9ac193372c572a140ceb92 100644
--- a/Help/prop_gbl/XCODE_GENERATE_SCHEME.rst
+++ b/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst
@@ -1,5 +1,5 @@
-XCODE_GENERATE_SCHEME
----------------------
+CMAKE_XCODE_GENERATE_SCHEME
+---------------------------
 
 If enabled, the Xcode generator will generate schema files. Those are
 are useful to invoke analyze, archive, build-for-testing and test
diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx
index b023d5cf622b6f3bb3715addc4b6a5fc4b26fa6c..77f3408711cd6d118b458073a725f080529adc36 100644
--- a/Source/cmGlobalXCodeGenerator.cxx
+++ b/Source/cmGlobalXCodeGenerator.cxx
@@ -3341,8 +3341,7 @@ void cmGlobalXCodeGenerator::OutputXCodeProject(
 
   // Since the lowest available Xcode version for testing was 7.0,
   // I'm setting this as a limit then
-  if (this->GetCMakeInstance()->GetState()->GetGlobalPropertyAsBool(
-        "XCODE_GENERATE_SCHEME") &&
+  if (root->GetMakefile()->IsOn("CMAKE_XCODE_GENERATE_SCHEME") &&
       this->XcodeVersion >= 70) {
     this->OutputXCodeSharedSchemes(xcodeDir);
     this->OutputXCodeWorkspaceSettings(xcodeDir);
diff --git a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake
index f51a107b78f592294b49b753329dbd5301cc979b..5f4bdc30dd8bc48655e5d260d370d2fdb94ca683 100644
--- a/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake
+++ b/Tests/RunCMake/XcodeProject/RunCMakeTest.cmake
@@ -187,3 +187,19 @@ if(NOT XCODE_VERSION VERSION_LESS 5)
   unset(RunCMake_TEST_NO_CLEAN)
   unset(RunCMake_TEST_OPTIONS)
 endif()
+
+function(XcodeSchemaGeneration)
+  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/XcodeSchemaGeneration-build)
+  set(RunCMake_TEST_NO_CLEAN 1)
+  set(RunCMake_TEST_OPTIONS "-DCMAKE_XCODE_GENERATE_SCHEME=ON")
+
+  file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
+  file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
+
+  run_cmake(XcodeSchemaGeneration)
+  run_cmake_command(XcodeSchemaGeneration-build xcodebuild -scheme foo build)
+endfunction()
+
+if(NOT XCODE_VERSION VERSION_LESS 7)
+  XcodeSchemaGeneration()
+endif()
diff --git a/Tests/RunCMake/XcodeProject/XcodeSchemaGeneration.cmake b/Tests/RunCMake/XcodeProject/XcodeSchemaGeneration.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..2fe5a9f839b014e5ce665ed3a4a2da8ec9cc89d2
--- /dev/null
+++ b/Tests/RunCMake/XcodeProject/XcodeSchemaGeneration.cmake
@@ -0,0 +1,5 @@
+cmake_minimum_required(VERSION 3.7)
+
+project(XcodeSchemaGeneration CXX)
+
+add_executable(foo main.cpp)