From c21932163779bcfe4577ac2e3326b8c113884829 Mon Sep 17 00:00:00 2001 From: Ivan Komissarov Date: Sun, 29 Nov 2020 12:58:47 +0100 Subject: cmake: Fix building documentation It was never implemented Fixes: QBS-1618 Change-Id: I702410b546cacd439989268d3d4fbb18051d1819 Reviewed-by: Christian Kandeler --- CMakeLists.txt | 3 +++ cmake/QbsAPI.cmake | 13 ++++++++++++ doc/CMakeLists.txt | 45 +++++++++++++++++++++++++++++++++++++++++ scripts/build-qbs-with-cmake.sh | 10 ++++++++- share/CMakeLists.txt | 23 +++++++++------------ 5 files changed, 79 insertions(+), 15 deletions(-) create mode 100644 doc/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 18b8c7fc7..d23ddf8cc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,8 @@ option(WITH_TESTS "Build Tests" ON) option(WITH_UNIT_TESTS "Build Unit Tests" OFF) option(WITH_PROJECT_FILE_UPDATES "Enable project file updates support" OFF) option(INSTALL_PUBLIC_HEADERS "Whether to install public headers" ON) +option(QBS_INSTALL_HTML_DOCS "Whether to install HTML Documentation" OFF) +option(QBS_INSTALL_QCH_DOCS "Whether to install QCH Documentation" OFF) if(WITH_TESTS) enable_testing() @@ -39,6 +41,7 @@ find_package(Qt5 ) add_subdirectory(src) +add_subdirectory(doc) add_subdirectory(share) if(WITH_TESTS) add_subdirectory(tests) diff --git a/cmake/QbsAPI.cmake b/cmake/QbsAPI.cmake index d8847e683..2c64a0303 100644 --- a/cmake/QbsAPI.cmake +++ b/cmake/QbsAPI.cmake @@ -17,6 +17,7 @@ set(QBS_LIBEXEC_INSTALL_DIR "${_DEFAULT_LIBEXEC_INSTALL_DIR}" CACHE STRING "Rela set(QBS_PLUGINS_INSTALL_BASE "${QBS_LIBDIR_NAME}" CACHE STRING "Relative install location for Qbs plugins.") set(QBS_RESOURCES_INSTALL_BASE "." CACHE STRING "Relative install location for Qbs resources.") set(QBS_HEADERS_INSTALL_DIR "include/qbs" CACHE STRING "Relative install location for Qbs headers.") +set(QBS_DOC_INSTALL_DIR "${QBS_RESOURCES_INSTALL_BASE}/share/doc/qbs/html" CACHE STRING "Relative install location for Qbs documentation.") set(QBS_PLUGINS_INSTALL_DIR "${QBS_PLUGINS_INSTALL_BASE}/qbs/plugins") set(QBS_RESOURCES_INSTALL_DIR "${QBS_RESOURCES_INSTALL_BASE}/share") @@ -42,6 +43,18 @@ else() set(QBS_PLUGINS_RPATH "\$ORIGIN/${QBS_RELATIVE_PLUGINS_RPATH}") endif() +if(WIN32) + get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_RELEASE) + if(NOT _QTCORE_LIBRARY) + get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_DEBUG) + endif() + get_filename_component(_QT_LIBRARY_PATH "${_QTCORE_LIBRARY}" DIRECTORY) + get_target_property(_QBS_LIBRARY_PATH qbscore LIBRARY_OUTPUT_DIRECTORY) + set(UPDATE_PATH_COMMAND set "PATH=${_QT_LIBRARY_PATH}\;${_QBS_LIBRARY_PATH}\;%PATH%") +else() + set(UPDATE_PATH_COMMAND "") +endif() + if(WITH_UNIT_TESTS) set(QBS_UNIT_TESTS_DEFINES "QBS_ENABLE_UNIT_TESTS") else() diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 000000000..9357dcf63 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,45 @@ +if (QBS_INSTALL_HTML_DOCS OR QBS_INSTALL_QCH_DOCS) + get_target_property(_QBS_OUTPUT_DIR qbs RUNTIME_OUTPUT_DIRECTORY) + + if (QBS_INSTALL_HTML_DOCS) + set(_INSTALL_HTML_DOCS true) + else() + set(_INSTALL_HTML_DOCS false) + endif() + + if (QBS_INSTALL_QCH_DOCS) + set(_INSTALL_QCH_DOCS true) + else() + set(_INSTALL_QCH_DOCS false) + endif() + + add_custom_target( + BuildQbsDocumentation ALL + COMMAND ${UPDATE_PATH_COMMAND} + COMMAND ${_QBS_OUTPUT_DIR}/qbs + resolve + --settings-dir ${PROJECT_BINARY_DIR}/settings + -f ${PROJECT_SOURCE_DIR}/qbs.qbs + -d ${PROJECT_BINARY_DIR}/ + config:doc-build + qbs.installPrefix:undefined + project.withCode:false + project.withDocumentation:true + profile:none + modules.qbsbuildconfig.installHtml:${_INSTALL_HTML_DOCS} + modules.qbsbuildconfig.installQch:${_INSTALL_QCH_DOCS} + moduleProviders.Qt.qmakeFilePaths:${QT_QMAKE_EXECUTABLE} + COMMAND ${_QBS_OUTPUT_DIR}/qbs + build + --settings-dir ${PROJECT_BINARY_DIR}/settings + -f ${PROJECT_SOURCE_DIR}/qbs.qbs + -d ${PROJECT_BINARY_DIR}/ + config:doc-build + -p "qbs documentation" + DEPENDS qbs copy-runtime-files-qbs + ) + install( + DIRECTORY ${PROJECT_BINARY_DIR}/doc-build/install-root/share/doc/qbs/html/ + DESTINATION "${QBS_DOC_INSTALL_DIR}" + ) +endif() diff --git a/scripts/build-qbs-with-cmake.sh b/scripts/build-qbs-with-cmake.sh index 73ba353b8..1c5600e3d 100755 --- a/scripts/build-qbs-with-cmake.sh +++ b/scripts/build-qbs-with-cmake.sh @@ -45,7 +45,15 @@ set -e # export QBS_AUTOTEST_SETTINGS_DIR="${QBS_AUTOTEST_SETTINGS_DIR:-/tmp/qbs-settings}" -BUILD_OPTIONS="-DWITH_UNIT_TESTS=1 -DWITH_PROJECT_FILE_UPDATES=1 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ${BUILD_OPTIONS}" +BUILD_OPTIONS="\ + -DWITH_UNIT_TESTS=1 \ + -DWITH_PROJECT_FILE_UPDATES=1 \ + -DQBS_INSTALL_HTML_DOCS=1 \ + -DQBS_INSTALL_QCH_DOCS=1 \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + ${BUILD_OPTIONS} \ +" QMAKE_PATH="${QMAKE_PATH:-$(which qmake)}" QT_DIR=$(dirname ${QMAKE_PATH})/../ diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt index bfc657b6f..a617dbd75 100644 --- a/share/CMakeLists.txt +++ b/share/CMakeLists.txt @@ -32,32 +32,27 @@ install( DESTINATION "${QBS_RESOURCES_INSTALL_DIR}/qbs" ) -if(WIN32) - get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_RELEASE) - if(NOT _QTCORE_LIBRARY) - get_target_property(_QTCORE_LIBRARY Qt5::Core IMPORTED_LOCATION_DEBUG) - endif() - get_filename_component(_QT_LIBRARY_PATH "${_QTCORE_LIBRARY}" DIRECTORY) - get_target_property(_QBS_LIBRARY_PATH qbscore LIBRARY_OUTPUT_DIRECTORY) - set(UPDATE_PATH_COMMAND set "PATH=${_QT_LIBRARY_PATH}\;${_QBS_LIBRARY_PATH}\;%PATH%") -else() - set(UPDATE_PATH_COMMAND "") -endif() - get_target_property(_QBS_OUTPUT_DIR qbs RUNTIME_OUTPUT_DIRECTORY) add_custom_target( BuildQbsResources ALL COMMAND ${UPDATE_PATH_COMMAND} COMMAND ${_QBS_OUTPUT_DIR}/qbs - build + resolve --settings-dir ${PROJECT_BINARY_DIR}/settings -f ${PROJECT_SOURCE_DIR}/qbs.qbs -d ${PROJECT_BINARY_DIR}/ - -p "qbs resources" + config:resources-build qbs.installPrefix:undefined project.withCode:false project.withDocumentation:false profile:none + COMMAND ${_QBS_OUTPUT_DIR}/qbs + build + --settings-dir ${PROJECT_BINARY_DIR}/settings + -f ${PROJECT_SOURCE_DIR}/qbs.qbs + -d ${PROJECT_BINARY_DIR}/ + config:resources-build + -p "qbs resources" DEPENDS qbs copy-runtime-files-qbs ) -- cgit v1.2.1