From 3c4f7967e32bbef76710b591728b0d8c41e41bd3 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 20 Oct 2020 14:18:57 +0200 Subject: CMake Build: Allow building unittests when targets are missing when configuring a minimal build make sure that when querying for target properties like SOURCE_DIR the target actually exists. Change-Id: Ib754b79be6461e3ddd4cdeb1abac123cf4535068 Reviewed-by: Eike Ziller --- cmake/QtCreatorAPIInternal.cmake | 10 +++++++++- tests/unit/unittest/CMakeLists.txt | 27 +++++++++++++-------------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 5404680da0..8e55d4e8a1 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -386,7 +386,7 @@ endfunction() function(extend_qtc_target target_name) cmake_parse_arguments(_arg "" - "SOURCES_PREFIX;FEATURE_INFO" + "SOURCES_PREFIX;SOURCES_PREFIX_FROM_TARGET;FEATURE_INFO" "CONDITION;DEPENDS;PUBLIC_DEPENDS;DEFINES;PUBLIC_DEFINES;INCLUDES;PUBLIC_INCLUDES;SOURCES;EXPLICIT_MOC;SKIP_AUTOMOC;EXTRA_TRANSLATIONS;PROPERTIES" ${ARGN} ) @@ -411,6 +411,14 @@ function(extend_qtc_target target_name) return() endif() + if (_arg_SOURCES_PREFIX_FROM_TARGET) + if (NOT TARGET ${_arg_SOURCES_PREFIX_FROM_TARGET}) + return() + else() + get_target_property(_arg_SOURCES_PREFIX ${_arg_SOURCES_PREFIX_FROM_TARGET} SOURCES_DIR) + endif() + endif() + add_qtc_depends(${target_name} PRIVATE ${_arg_DEPENDS} PUBLIC ${_arg_PUBLIC_DEPENDS} diff --git a/tests/unit/unittest/CMakeLists.txt b/tests/unit/unittest/CMakeLists.txt index 13741ae478..86f27616f3 100644 --- a/tests/unit/unittest/CMakeLists.txt +++ b/tests/unit/unittest/CMakeLists.txt @@ -40,7 +40,6 @@ add_qtc_test(unittest GTEST clientserveroutsideprocess-test.cpp commandlinebuilder-test.cpp compare-operators.h - compilationdatabaseutils-test.cpp compileroptionsbuilder-test.cpp conditionally-disabled-tests.h cppprojectfilecategorizer-test.cpp @@ -319,7 +318,7 @@ extend_qtc_test(unittest ) extend_qtc_test(unittest - CONDITION TARGET clangFormat + CONDITION TARGET ClangFormat DEPENDS clangFormat SOURCES clangformat-test.cpp @@ -421,9 +420,8 @@ extend_qtc_test_with_target_sources(CPlusPlus DEFINES CPLUSPLUS_BUILD_STATIC_LIB extend_qtc_test_with_target_sources(3rd_cplusplus DEFINES CPLUSPLUS_BUILD_LIB) extend_qtc_test_with_target_sources(ClangSupport DEFINES CLANGSUPPORT_BUILD_LIB) -get_target_property(ClangCodeModelSourcesDir ClangCodeModel SOURCES_DIR) extend_qtc_test(unittest - SOURCES_PREFIX "${ClangCodeModelSourcesDir}" + SOURCES_PREFIX_FROM_TARGET ClangCodeModel SOURCES clangactivationsequencecontextprocessor.cpp clangactivationsequencecontextprocessor.h clangactivationsequenceprocessor.cpp clangactivationsequenceprocessor.h @@ -436,16 +434,20 @@ extend_qtc_test(unittest clangisdiagnosticrelatedtolocation.h ) -get_target_property(CompilationDatabasePMSourcesDir CompilationDatabaseProjectManager SOURCES_DIR) extend_qtc_test(unittest - SOURCES_PREFIX "${CompilationDatabasePMSourcesDir}" + SOURCES_PREFIX_FROM_TARGET CompilationDatabaseProjectManager SOURCES compilationdatabaseutils.cpp compilationdatabaseutils.h ) -get_target_property(CoreSourcesDir Core SOURCES_DIR) extend_qtc_test(unittest - SOURCES_PREFIX "${CoreSourcesDir}" + CONDITION TARGET CompilationDatabaseProjectManager + SOURCES + compilationdatabaseutils-test.cpp +) + +extend_qtc_test(unittest + SOURCES_PREFIX_FROM_TARGET Core DEFINES CORE_STATIC_LIBRARY SOURCES coreicons.cpp coreicons.h @@ -453,9 +455,8 @@ extend_qtc_test(unittest locator/ilocatorfilter.cpp locator/ilocatorfilter.h ) -get_target_property(CppToolsSourcesDir CppTools SOURCES_DIR) extend_qtc_test(unittest - SOURCES_PREFIX "${CppToolsSourcesDir}" + SOURCES_PREFIX_FROM_TARGET CppTools DEFINES CPPTOOLS_STATIC_LIBRARY SOURCES cppprojectfile.cpp cppprojectfile.h @@ -469,9 +470,8 @@ extend_qtc_test(unittest headerpathfilter.cpp headerpathfilter.h ) -get_target_property(ProjectExplorerSourcesDir ProjectExplorer SOURCES_DIR) extend_qtc_test(unittest - SOURCES_PREFIX "${ProjectExplorerSourcesDir}" + SOURCES_PREFIX_FROM_TARGET ProjectExplorer DEFINES PROJECTEXPLORER_STATIC_LIBRARY SOURCES projectmacro.cpp projectmacro.h @@ -517,9 +517,8 @@ extend_qtc_test(unittest progressmanagerinterface.h ) -get_target_property(ClangFormatSourcesDir ClangFormat SOURCES_DIR) extend_qtc_test(unittest - SOURCES_PREFIX "${ClangFormatSourcesDir}" + SOURCES_PREFIX_FROM_TARGET ClangFormat DEFINES CLANGPCHMANAGER_STATIC_LIB SOURCES clangformatconstants.h -- cgit v1.2.3