aboutsummaryrefslogtreecommitdiffstats
path: root/share/CMakeLists.txt
diff options
context:
space:
mode:
authorIvan Komissarov <abbapoh@gmail.com>2021-09-03 13:17:19 +0300
committerIvan Komissarov <ABBAPOH@gmail.com>2021-09-08 08:44:23 +0000
commitbcc3c5d5bd085067caf2721799303ebb1533c8b5 (patch)
treebb2da0032b595f1bc986728dd4979c32efbf8d00 /share/CMakeLists.txt
parent1acd941b42e6f99b55312bef93cfd448945409cb (diff)
cmake: Fix copying Qbs resources
... to avoid doing unnecessary actions when rebuilding project Fixes: QBS-1667 Change-Id: I8ed95c076494ab6aa3194491a3b9109478245767 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'share/CMakeLists.txt')
-rw-r--r--share/CMakeLists.txt71
1 files changed, 59 insertions, 12 deletions
diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt
index bde65d450..2891f7272 100644
--- a/share/CMakeLists.txt
+++ b/share/CMakeLists.txt
@@ -4,38 +4,81 @@ if(WIN32)
DESTINATION "${QBS_APP_INSTALL_DIR}"
)
endif()
+
+# below we copy some files that are required to run qbs from the build directory
+# emulating the same layout we will have after the installation
+
+# copy & install dmgbuild
install(
PROGRAMS ../src/3rdparty/python/bin/dmgbuild
DESTINATION "${QBS_LIBEXEC_INSTALL_DIR}"
)
-add_custom_target(copy-runtime-files-dmgbuild ALL
+set(_DMGBUILD_INSTALL_PATH ${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_LIBEXEC_INSTALL_DIR}/dmgbuild)
+add_custom_command(
+ OUTPUT ${_DMGBUILD_INSTALL_PATH}
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/../src/3rdparty/python/bin/dmgbuild
${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_LIBEXEC_INSTALL_DIR}
+ COMMENT "Copying dmgbuild script"
+ )
+
+# copy & install python packages
+set(_SITE_PACKAGES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src/3rdparty/python/lib/python2.7/site-packages/)
+file(GLOB_RECURSE _SITE_PACKAGES_RELATIVE RELATIVE "${_SITE_PACKAGES_DIR}" "${_SITE_PACKAGES_DIR}/*.py")
+
+set(_SITE_PACKAGES_SRC ${_SITE_PACKAGES_RELATIVE})
+list_transform_prepend(_SITE_PACKAGES_SRC "${_SITE_PACKAGES_DIR}/")
+
+set(_SITE_PACKAGES_DST ${_SITE_PACKAGES_RELATIVE})
+list_transform_prepend(_SITE_PACKAGES_DST "${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_RESOURCES_INSTALL_DIR}/qbs/python/")
+
+add_custom_command(
+ OUTPUT ${_SITE_PACKAGES_DST}
+ DEPENDS ${_SITE_PACKAGES_SRC}
+ COMMAND ${CMAKE_COMMAND} -E copy_directory
+ "${_SITE_PACKAGES_DIR}"
+ ${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_RESOURCES_INSTALL_DIR}/qbs/python
+ COMMENT "Copying Python packages"
)
install(
# trailing slash avoid copying the 'site-packages' dir and only copies its content
- DIRECTORY ../src/3rdparty/python/lib/python2.7/site-packages/
+ DIRECTORY "${_SITE_PACKAGES_DIR}"
DESTINATION "${QBS_RESOURCES_INSTALL_DIR}/qbs/python"
FILES_MATCHING PATTERN "*.py"
)
-install(
- DIRECTORY qbs
- DESTINATION "${QBS_RESOURCES_INSTALL_DIR}")
-add_custom_target(copy-runtime-files-qbs ALL
+
+# copy & install the "share/qbs" dir
+file(GLOB_RECURSE _QBS_RESOURCES_RELATIVE RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/qbs/*")
+
+set(_QBS_RESOURCES_SRC ${_QBS_RESOURCES_RELATIVE})
+list_transform_prepend(_QBS_RESOURCES_SRC "${CMAKE_CURRENT_SOURCE_DIR}/")
+
+set(_QBS_RESOURCES_DST ${_QBS_RESOURCES_RELATIVE})
+list_transform_prepend(_QBS_RESOURCES_DST "${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_RESOURCES_INSTALL_DIR}/")
+
+add_custom_command(
+ OUTPUT ${_QBS_RESOURCES_DST}
+ DEPENDS ${_QBS_RESOURCES_SRC}
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_CURRENT_SOURCE_DIR}/qbs
${CMAKE_BINARY_DIR}/${QBS_OUTPUT_PREFIX}${QBS_RESOURCES_INSTALL_DIR}/qbs
+ COMMENT "Copying QBS resources"
)
install(
+ DIRECTORY qbs
+ DESTINATION "${QBS_RESOURCES_INSTALL_DIR}")
+
+# install examples dir
+install(
DIRECTORY ../examples
DESTINATION "${QBS_RESOURCES_INSTALL_DIR}/qbs"
)
+set(_QMLTYPES_INSTALL_PATH "${PROJECT_BINARY_DIR}/resources-build/install-root/share/qbs/qml-type-descriptions/qbs.qmltypes")
get_update_path_command(UPDATE_PATH_COMMAND)
get_target_property(_QBS_OUTPUT_DIR qbs RUNTIME_OUTPUT_DIRECTORY)
-add_custom_target(
- BuildQbsResources ALL
+add_custom_command(
+ OUTPUT "${_QMLTYPES_INSTALL_PATH}"
COMMAND ${CMAKE_COMMAND} -E env "${UPDATE_PATH_COMMAND}" ${_QBS_OUTPUT_DIR}/qbs
resolve
--settings-dir ${PROJECT_BINARY_DIR}/settings
@@ -53,12 +96,16 @@ add_custom_target(
-d ${PROJECT_BINARY_DIR}/
config:resources-build
-p "qbs resources"
- DEPENDS qbs copy-runtime-files-qbs qbs_processlauncher
+ DEPENDS qbs "${_QBS_RESOURCES_DST}" qbs_processlauncher
)
-install(
- DIRECTORY ${PROJECT_BINARY_DIR}/resources-build/install-root/share/qbs/qml-type-descriptions
- DESTINATION "${QBS_RESOURCES_INSTALL_DIR}/qbs"
+add_custom_target(
+ BuildQbsResources ALL
+ DEPENDS
+ "${_DMGBUILD_INSTALL_PATH}"
+ ${_SITE_PACKAGES_DST}
+ ${_QBS_RESOURCES_DST}
+ "${_QMLTYPES_INSTALL_PATH}"
)
install(