summaryrefslogtreecommitdiffstats
path: root/cmake/QtInstallHelpers.cmake
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2021-09-08 09:30:11 +0200
committerJoerg Bornemann <joerg.bornemann@qt.io>2021-09-22 18:32:47 +0200
commitfb9cc529201dab24f864ede3e15114845aad0cdb (patch)
tree25121ba6e2e6191cce9b878cbb5dcf042a919587 /cmake/QtInstallHelpers.cmake
parenta36a795770d4c4cbab610c5721140023e02b1737 (diff)
Rework how installation is prevented in non-prefix builds
In non-prefix builds, we want to prevent users from accidentally running "cmake --install". We did that by replacing cmake_install.cmake with an empty file. The responsible target remove_cmake_install is visible in IDEs, appears in the build output, and the approach is hacky. It's cleaner and easier to add bail out code at the top of cmake_install.cmake. This is now done when calling qt_build_repo_begin. As a bonus, print an informative message on installation. Change-Id: I022b36289358ba09cac8b79781f44cd7b93113f7 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake/QtInstallHelpers.cmake')
-rw-r--r--cmake/QtInstallHelpers.cmake38
1 files changed, 0 insertions, 38 deletions
diff --git a/cmake/QtInstallHelpers.cmake b/cmake/QtInstallHelpers.cmake
index 9dbb22251d..50b2534fba 100644
--- a/cmake/QtInstallHelpers.cmake
+++ b/cmake/QtInstallHelpers.cmake
@@ -88,44 +88,6 @@ function(qt_copy_or_install)
qt_non_prefix_copy(COPY ${argv_copy} ${copy_arguments})
endfunction()
-# Hacky way to remove the install target in non-prefix builds.
-# We need to associate targets with export names, and that is only possible to do with the
-# install(TARGETS) command. But in a non-prefix build, we don't want to install anything.
-# To make sure that developers don't accidentally run make install, replace the generated
-# cmake_install.cmake file with an empty file. To do this, always create a new temporary file
-# at CMake configuration step, and use it as an input to a custom command that replaces the
-# cmake_install.cmake file with an empty one. This means we will always replace the file on
-# every reconfiguration, but not when doing null builds.
-function(qt_remove_install_target)
- # On superbuilds we only do this for qtbase - it will correctly remove the
- # cmake_install.cmake at the root of the repository.
- if(QT_SUPERBUILD)
- if(NOT (PROJECT_NAME STREQUAL "QtBase"))
- return()
- endif()
- endif()
-
- set(file_in "${CMAKE_BINARY_DIR}/.remove_cmake_install_in.txt")
- set(file_generated "${CMAKE_BINARY_DIR}/.remove_cmake_install_generated.txt")
- set(cmake_install_file "${CMAKE_BINARY_DIR}/cmake_install.cmake")
- file(WRITE ${file_in} "")
-
- add_custom_command(OUTPUT ${file_generated}
- COMMAND ${CMAKE_COMMAND} -E copy ${file_in} ${file_generated}
- COMMAND ${CMAKE_COMMAND} -E remove ${cmake_install_file}
- COMMAND ${CMAKE_COMMAND} -E touch ${cmake_install_file}
- COMMENT "Removing cmake_install.cmake"
- MAIN_DEPENDENCY ${file_in})
-
- add_custom_target(remove_cmake_install ALL DEPENDS ${file_generated})
-endfunction()
-
-function(qt_set_up_nonprefix_build)
- if(NOT QT_WILL_INSTALL)
- qt_remove_install_target()
- endif()
-endfunction()
-
# Create a versioned hard-link for the given target.
# E.g. "bin/qmake6" -> "bin/qmake".
# If no hard link can be created, make a copy instead.