From 6681fa7b738e89fbac5f556389c0c581802ea8de Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 22 Oct 2020 21:46:56 +0200 Subject: [PATCH] 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 --- cmake/QtDocsHelpers.cmake | 8 ++++++-- doc/CMakeLists.txt | 10 +++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cmake/QtDocsHelpers.cmake b/cmake/QtDocsHelpers.cmake index 0857f18eee..cbe4cbd309 100644 --- a/cmake/QtDocsHelpers.cmake +++ b/cmake/QtDocsHelpers.cmake @@ -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}") diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 81f1017dde..ade91bcef8 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -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()