Files
CMake/Utilities/Sphinx/tutorial_archive.cmake
Brad King 5473a45fd8 Tutorial: Restore source archive when published on cmake.org
Restore commit 4cb616fed6 (Tutorial: Provide a source archive when
published on cmake.org, 2022-04-27, v3.23.2~22^2).  Its effects were
accidentally reverted by commit 9784834b4c (Help: Use `*.rst` extension
for included files, 2025-04-07, v4.1.0-rc1~354^2).

Reported-by: Vito Gamberini <vito.gamberini@kitware.com>
2025-10-29 09:17:14 -04:00

43 lines
1.5 KiB
CMake

if(NOT version)
message(FATAL_ERROR "Pass -Dversion=")
endif()
# Name of the archive and its top-level directory.
set(archive_name "cmake-${version}-tutorial-source")
# Base directory for CMake Documentation.
set(help_dir "${CMAKE_CURRENT_LIST_DIR}/../../Help")
cmake_path(ABSOLUTE_PATH help_dir NORMALIZE)
# Collect the non-documentation part of the tutorial directory.
file(COPY "${help_dir}/guide/tutorial/"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${archive_name}"
NO_SOURCE_PERMISSIONS
PATTERN *.rst EXCLUDE
REGEX "/guide/tutorial/include$" EXCLUDE
)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${archive_name}/README.txt" [[
This directory contains source code examples for the CMake Tutorial.
Each step has its own subdirectory containing code that may be used as a
starting point. The tutorial examples are progressive so that each step
provides the complete solution for the previous step.
]])
# Create an archive containing the tutorial source examples.
file(MAKE_DIRECTORY "${help_dir}/_generated")
file(ARCHIVE_CREATE
OUTPUT "${help_dir}/_generated/${archive_name}.zip"
PATHS "${CMAKE_CURRENT_BINARY_DIR}/${archive_name}"
FORMAT zip
)
# Write a reStructuredText snippet included from the tutorial index.
file(WRITE "${help_dir}/guide/tutorial/include/source.rst" [[
.. |tutorial_source| replace::
The tutorial source code examples are available in
:download:`this archive </_generated/]] "${archive_name}" [[.zip>`.
]])
# Remove temporary directory.
file(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/${archive_name}")