# Used by build_help_project CMake function to generate the qhp file.
# The WORKING_DIRECTORY for this script must be the same as the location for the
# qhp file otherwise the toc won't be generated correctly.
# Input environment:
# output_file :-
# file_patterns :-
# namespace :-
# folder :-
# name :-
if (POLICY CMP0053)
cmake_policy(SET CMP0053 NEW)
endif ()
# extracts title from the html page to generate a user-friendly index.
function (extract_title name filename)
file (READ ${filename} contents)
string (REGEX MATCH "
(.*)" tmp "${contents}")
if (CMAKE_MATCH_1)
set (${name} "${CMAKE_MATCH_1}" PARENT_SCOPE)
else ()
get_filename_component(filename_name "${filename}" NAME)
set (${name} "${filename_name}" PARENT_SCOPE)
endif()
endfunction()
set (qhp_contents
"
@namespace@
@folder@
@toc@
@files@
")
if (NOT output_file OR NOT file_patterns OR NOT namespace OR NOT folder OR NOT name)
message(FATAL_ERROR "Missing one of the required arguments!!")
endif ()
string (REPLACE "+" ";" file_patterns "${file_patterns}")
get_filename_component(working_dir "${output_file}" PATH)
# We generate a toc using the files present.
file (GLOB matching_files RELATIVE "${CMAKE_CURRENT_BINARY_DIR}" ${file_patterns} )
set (toc)
set (index_page)
foreach (filename ${matching_files})
string(REGEX MATCH "^(.*)\\.html$" _tmp "${filename}")
set (name_we ${CMAKE_MATCH_1})
if (name_we)
extract_title(title "${filename}")
set (toc "${toc} \n")
string(TOLOWER "${filename}" lowercase_filename)
if (lowercase_filename MATCHES "index.html$")
set (index_page "${filename}")
endif ()
endif()
endforeach()
if (NOT index_page AND matching_files)
# no index.html file located. Just point to the first html, if any.
list(GET matching_files 0 index_page)
endif()
set (toc
" ")
set (files)
foreach(filename ${file_patterns})
set (files "${files}${filename}\n")
endforeach()
string(CONFIGURE "${qhp_contents}" text @ONLY)
file (WRITE "${output_file}" "${text}")