From 3d512d17567f365bfd5cc1132830ad814a006dc0 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Wed, 23 Jun 2021 12:16:03 +0200 Subject: [PATCH] CMake: Fix 'Cannot find source file' error with older CMakes Configuring a static qtdeclarative with CMake versions older than 3.18.0 fails at generation phase with CMake Error at cmake/QtExecutableHelpers.cmake:28 (add_executable): Cannot find source file: some_path/some_target_plugin_imports_Gui.cpp Marking the generated file as GENERATED explicitly solves the issue. Change-Id: Ife0eba61a1aab4f988d9fe7e2217d30eb96774a7 Reviewed-by: Alexey Edelev Reviewed-by: Joerg Bornemann (cherry picked from commit e2c6f2ba7ed72195d12e9882c174e59a53317097) --- cmake/QtExecutableHelpers.cmake | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/cmake/QtExecutableHelpers.cmake b/cmake/QtExecutableHelpers.cmake index db50f4554a9..fba57358032 100644 --- a/cmake/QtExecutableHelpers.cmake +++ b/cmake/QtExecutableHelpers.cmake @@ -240,7 +240,9 @@ function(qt_internal_add_executable name) set(class_names "${class_names_regular}${class_names_separator}${class_names_current_project}") - file(GENERATE OUTPUT ${out_file} CONTENT + set(out_file_path "${CMAKE_CURRENT_BINARY_DIR}/${out_file}") + + file(GENERATE OUTPUT "${out_file_path}" CONTENT "// This file is auto-generated. Do not edit. #include @@ -248,8 +250,14 @@ Q_IMPORT_PLUGIN($) " CONDITION "$>" ) + + # CMake versions earlier than 3.18.0 can't find the generated file for some reason, + # failing at generation phase. + # Explicitly marking the file as GENERATED fixes the issue. + set_source_files_properties("${out_file_path}" PROPERTIES GENERATED TRUE) + target_sources(${name} PRIVATE - "$<$>:${out_file}>" + "$<$>:${out_file_path}>" ) target_link_libraries(${name} PRIVATE "$"