Help: Add option to create and install Qt .qch file.
This commit is contained in:
parent
521b930bf4
commit
85582d14fe
|
@ -24,6 +24,7 @@ project(CMakeHelp NONE)
|
||||||
|
|
||||||
option(SPHINX_MAN "Build man pages with Sphinx" OFF)
|
option(SPHINX_MAN "Build man pages with Sphinx" OFF)
|
||||||
option(SPHINX_HTML "Build html help with Sphinx" OFF)
|
option(SPHINX_HTML "Build html help with Sphinx" OFF)
|
||||||
|
option(SPHINX_QTHELP "Build Qt help with Sphinx" OFF)
|
||||||
option(SPHINX_TEXT "Build text help with Sphinx (not installed)" OFF)
|
option(SPHINX_TEXT "Build text help with Sphinx (not installed)" OFF)
|
||||||
find_program(SPHINX_EXECUTABLE
|
find_program(SPHINX_EXECUTABLE
|
||||||
NAMES sphinx-build
|
NAMES sphinx-build
|
||||||
|
@ -32,7 +33,7 @@ find_program(SPHINX_EXECUTABLE
|
||||||
|
|
||||||
mark_as_advanced(SPHINX_TEXT)
|
mark_as_advanced(SPHINX_TEXT)
|
||||||
|
|
||||||
if(NOT SPHINX_MAN AND NOT SPHINX_HTML AND NOT SPHINX_TEXT)
|
if(NOT SPHINX_MAN AND NOT SPHINX_HTML AND NOT SPHINX_QTHELP AND NOT SPHINX_TEXT)
|
||||||
return()
|
return()
|
||||||
elseif(NOT SPHINX_EXECUTABLE)
|
elseif(NOT SPHINX_EXECUTABLE)
|
||||||
message(FATAL_ERROR "SPHINX_EXECUTABLE (sphinx-build) is not found!")
|
message(FATAL_ERROR "SPHINX_EXECUTABLE (sphinx-build) is not found!")
|
||||||
|
@ -63,6 +64,21 @@ endif()
|
||||||
if(SPHINX_TEXT)
|
if(SPHINX_TEXT)
|
||||||
list(APPEND doc_formats text)
|
list(APPEND doc_formats text)
|
||||||
endif()
|
endif()
|
||||||
|
if(SPHINX_QTHELP)
|
||||||
|
find_program(QCOLLECTIONGENERATOR_EXECUTABLE
|
||||||
|
NAMES qcollectiongenerator
|
||||||
|
DOC "qcollectiongenerator tool"
|
||||||
|
)
|
||||||
|
if (NOT QCOLLECTIONGENERATOR_EXECUTABLE)
|
||||||
|
message(FATAL_ERROR "QCOLLECTIONGENERATOR_EXECUTABLE (qcollectiongenerator) not found!")
|
||||||
|
endif()
|
||||||
|
list(APPEND doc_formats qthelp)
|
||||||
|
|
||||||
|
set(qthelp_extra_commands
|
||||||
|
COMMAND qcollectiongenerator ${CMAKE_CURRENT_BINARY_DIR}/qthelp/CMake.qhcp
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
set(doc_format_outputs "")
|
set(doc_format_outputs "")
|
||||||
set(doc_format_last "")
|
set(doc_format_last "")
|
||||||
|
@ -78,6 +94,7 @@ foreach(format ${doc_formats})
|
||||||
${CMake_SOURCE_DIR}/Help
|
${CMake_SOURCE_DIR}/Help
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/${format}
|
${CMAKE_CURRENT_BINARY_DIR}/${format}
|
||||||
> ${doc_format_log} # log stdout, pass stderr
|
> ${doc_format_log} # log stdout, pass stderr
|
||||||
|
${${format}_extra_commands}
|
||||||
DEPENDS ${doc_format_last}
|
DEPENDS ${doc_format_last}
|
||||||
COMMENT "sphinx-build ${format}: see Utilities/Sphinx/${doc_format_log}"
|
COMMENT "sphinx-build ${format}: see Utilities/Sphinx/${doc_format_log}"
|
||||||
VERBATIM
|
VERBATIM
|
||||||
|
@ -122,3 +139,8 @@ if(SPHINX_HTML)
|
||||||
PATTERN objects.inv EXCLUDE
|
PATTERN objects.inv EXCLUDE
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
if(SPHINX_QTHELP)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qthelp/CMake.qch
|
||||||
|
DESTINATION ${CMAKE_DOC_DIR}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
|
@ -21,6 +21,24 @@ from pygments.lexer import bygroups
|
||||||
CMakeLexer.tokens["args"].append(('(\\$<)(.+?)(>)',
|
CMakeLexer.tokens["args"].append(('(\\$<)(.+?)(>)',
|
||||||
bygroups(Operator, Name.Variable, Operator)))
|
bygroups(Operator, Name.Variable, Operator)))
|
||||||
|
|
||||||
|
# Monkey patch for sphinx generating invalid content for qcollectiongenerator
|
||||||
|
# https://bitbucket.org/birkenfeld/sphinx/issue/1435/qthelp-builder-should-htmlescape-keywords
|
||||||
|
from sphinx.util.pycompat import htmlescape
|
||||||
|
from sphinx.builders.qthelp import QtHelpBuilder
|
||||||
|
old_build_keywords = QtHelpBuilder.build_keywords
|
||||||
|
def new_build_keywords(self, title, refs, subitems):
|
||||||
|
old_items = old_build_keywords(self, title, refs, subitems)
|
||||||
|
new_items = []
|
||||||
|
for item in old_items:
|
||||||
|
before, rest = item.split("ref=\"", 1)
|
||||||
|
ref, after = rest.split("\"")
|
||||||
|
if ("<" in ref and ">" in ref):
|
||||||
|
new_items.append(before + "ref=\"" + htmlescape(ref) + "\"" + after)
|
||||||
|
else:
|
||||||
|
new_items.append(item)
|
||||||
|
return new_items
|
||||||
|
QtHelpBuilder.build_keywords = new_build_keywords
|
||||||
|
|
||||||
|
|
||||||
from docutils.parsers.rst import Directive, directives
|
from docutils.parsers.rst import Directive, directives
|
||||||
from docutils.transforms import Transform
|
from docutils.transforms import Transform
|
||||||
|
|
Loading…
Reference in New Issue