aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/clangsupport/CMakeLists.txt
diff options
context:
space:
mode:
authorAlexis Murzeau <amubtdx@gmail.com>2020-04-29 22:09:45 +0200
committerAlexis Murzeau <amubtdx@gmail.com>2020-05-11 22:36:30 +0000
commita9aa5612345bcfae9a5562e135dec9de8c3b8a8f (patch)
treec668c7584982785c8eca076e759c9c89ea6b3236 /src/libs/clangsupport/CMakeLists.txt
parent95d9eafc8a6bbd21f0bcde0274d2ec100d6f386b (diff)
CMake: copy clang and resource files only if necessary
Uses a timestamp file in the build directory to detect when the input changes using DEPENDS from add_custom_command. Total copied files size sum up to more than 260 MB. This was copied at every incremental build, even if nothing changed. This leads to faster build, especially when the copied files are not cached in RAM or when not using a SSD. Change-Id: I3a0b691b961e1d8591068bacf40ae2467c8637cf Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Diffstat (limited to 'src/libs/clangsupport/CMakeLists.txt')
-rw-r--r--src/libs/clangsupport/CMakeLists.txt26
1 files changed, 6 insertions, 20 deletions
diff --git a/src/libs/clangsupport/CMakeLists.txt b/src/libs/clangsupport/CMakeLists.txt
index 20af2c1b9d..d1f38507cb 100644
--- a/src/libs/clangsupport/CMakeLists.txt
+++ b/src/libs/clangsupport/CMakeLists.txt
@@ -147,32 +147,18 @@ if (NOT TARGET libclang)
return()
endif()
-add_custom_target(copy_clang_to_builddir ALL
- COMMENT Copy Clang files into build directory
-)
-
# For the developer build directory
-add_custom_command(TARGET copy_clang_to_builddir POST_BUILD
- COMMAND "${CMAKE_COMMAND}"
- -E copy_directory
- "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION}/include"
- "${PROJECT_BINARY_DIR}/${IDE_LIBEXEC_PATH}/clang/lib/clang/${CLANG_VERSION}/include"
- VERBATIM
+qtc_copy_to_builddir(copy_clang_to_builddir
+ DIRECTORIES "${LLVM_LIBRARY_DIR}/clang/${CLANG_VERSION}/include"
+ DESTINATION "${IDE_LIBEXEC_PATH}/clang/lib/clang/${CLANG_VERSION}/include"
)
foreach(executable clang clang-cl clangd clang-tidy clazy-standalone)
if (EXISTS "${LLVM_TOOLS_BINARY_DIR}/${executable}${CMAKE_EXECUTABLE_SUFFIX}")
- add_custom_command(TARGET copy_clang_to_builddir PRE_BUILD
- COMMAND "${CMAKE_COMMAND}"
- -E make_directory
- "${PROJECT_BINARY_DIR}/${IDE_LIBEXEC_PATH}/clang/bin/"
- COMMAND "${CMAKE_COMMAND}"
- -E copy
- "${LLVM_TOOLS_BINARY_DIR}/${executable}${CMAKE_EXECUTABLE_SUFFIX}"
- "${PROJECT_BINARY_DIR}/${IDE_LIBEXEC_PATH}/clang/bin/"
- VERBATIM
+ qtc_copy_to_builddir(copy_clang_${executable}_to_builddir
+ FILES "${LLVM_TOOLS_BINARY_DIR}/${executable}${CMAKE_EXECUTABLE_SUFFIX}"
+ DESTINATION "${IDE_LIBEXEC_PATH}/clang/bin/"
)
-
# For the install directory
install(PROGRAMS
"${LLVM_TOOLS_BINARY_DIR}/${executable}${CMAKE_EXECUTABLE_SUFFIX}"