CMake: Allow docs generation without installing in top-level builds

This patch allows in top-level prefix builds to build Qt and to generate
the documentation without running cmake --install first.

For top-level builds we now always use the qdoc binary from the build
directory, not the installation directory.

We also have to copy the global doc files to the build directory to make
them accessible to the generate_docs target.

Change-Id: I2251603418fc3df9a21c7f2892789e9ff6c8cc21
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Joerg Bornemann 2020-10-22 21:46:56 +02:00
parent 1f53a91ed3
commit 6681fa7b73
2 changed files with 13 additions and 5 deletions

View File

@ -16,7 +16,9 @@ function(qt_internal_add_docs)
return()
endif()
if (QT_SUPERBUILD OR QT_WILL_INSTALL)
if(QT_SUPERBUILD)
set(doc_tools_dir "${QtBase_BINARY_DIR}/${INSTALL_BINDIR}")
elseif(QT_WILL_INSTALL)
set(doc_tools_dir "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${INSTALL_BINDIR}")
else()
set(doc_tools_dir "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/qtbase/${INSTALL_BINDIR}")
@ -80,7 +82,9 @@ function(qt_internal_add_docs)
"${include_path_args}"
)
if (QT_WILL_INSTALL)
if(QT_SUPERBUILD)
set(qt_install_docs_env "${QtBase_BINARY_DIR}/${INSTALL_DOCDIR}")
elseif(QT_WILL_INSTALL)
set(qt_install_docs_env "${CMAKE_INSTALL_PREFIX}/${INSTALL_DOCDIR}")
else()
set(qt_install_docs_env "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}/${INSTALL_DOCDIR}")

View File

@ -3,6 +3,10 @@
# Copy/Install doc configuration files to the build/install directory
#
qt_path_join(doc_install_dir ${QT_INSTALL_DIR} ${INSTALL_DOCDIR})
qt_copy_or_install(DIRECTORY global DESTINATION ${doc_install_dir})
qt_copy_or_install(DIRECTORY config DESTINATION ${doc_install_dir})
foreach(dir global config)
qt_copy_or_install(DIRECTORY ${dir} DESTINATION ${doc_install_dir})
if(QT_SUPERBUILD)
qt_path_join(destination ${QtBase_BINARY_DIR} ${INSTALL_DOCDIR})
file(COPY ${dir} DESTINATION ${destination})
endif()
endforeach()