diff --git a/cmake/FindClang.cmake b/cmake/FindClang.cmake index 0e1f5db36c6..3176db73b74 100644 --- a/cmake/FindClang.cmake +++ b/cmake/FindClang.cmake @@ -12,3 +12,15 @@ if (TARGET clangTooling AND NOT CLANGTOOLING_LINK_CLANG_DYLIB) elseif (TARGET clang-cpp) set(CLANG_TOOLING_LIBS libclang clang-cpp) endif() + +SET(QTC_CLANG_BUILDMODE_MATCH ON) +if (WIN32) + string(TOLOWER ${CMAKE_BUILD_TYPE} _type) + get_target_property(_llvmConfigs libclang IMPORTED_CONFIGURATIONS) + string(TOLOWER ${_llvmConfigs} _llvm_configs) + list(FIND _llvm_configs ${_type} _build_type_found) + if (_build_type_found LESS 0) + set(QTC_CLANG_BUILDMODE_MATCH OFF) + message("Build mode mismatch (debug vs release): limiting clangTooling") + endif() +endif() diff --git a/src/plugins/clangformat/CMakeLists.txt b/src/plugins/clangformat/CMakeLists.txt index 9e91349a3c3..83593064265 100644 --- a/src/plugins/clangformat/CMakeLists.txt +++ b/src/plugins/clangformat/CMakeLists.txt @@ -1,5 +1,5 @@ add_qtc_plugin(ClangFormat - CONDITION TARGET libclang AND LLVM_PACKAGE_VERSION VERSION_GREATER_EQUAL 10.0.0 + CONDITION TARGET libclang AND LLVM_PACKAGE_VERSION VERSION_GREATER_EQUAL 10.0.0 AND QTC_CLANG_BUILDMODE_MATCH DEPENDS Utils Qt5::Widgets clangFormat INCLUDES "${CLANG_INCLUDE_DIRS}" PLUGIN_DEPENDS Core TextEditor CppEditor CppTools ProjectExplorer diff --git a/src/plugins/clangpchmanager/CMakeLists.txt b/src/plugins/clangpchmanager/CMakeLists.txt index c1c9b29f93c..bc637b5640a 100644 --- a/src/plugins/clangpchmanager/CMakeLists.txt +++ b/src/plugins/clangpchmanager/CMakeLists.txt @@ -1,6 +1,6 @@ add_qtc_plugin(ClangPchManager BUILD_DEFAULT OFF - CONDITION TARGET libclang + CONDITION TARGET libclang AND QTC_CLANG_BUILDMODE_MATCH DEPENDS ClangSupport CPlusPlus DEFINES CLANGPCHMANAGER_LIB PLUGIN_DEPENDS Core CppTools diff --git a/src/plugins/clangrefactoring/CMakeLists.txt b/src/plugins/clangrefactoring/CMakeLists.txt index 95c926dc2d0..37b3221e451 100644 --- a/src/plugins/clangrefactoring/CMakeLists.txt +++ b/src/plugins/clangrefactoring/CMakeLists.txt @@ -1,6 +1,6 @@ add_qtc_plugin(ClangRefactoring BUILD_DEFAULT OFF - CONDITION TARGET libclang + CONDITION TARGET libclang AND QTC_CLANG_BUILDMODE_MATCH DEPENDS ClangSupport CPlusPlus PLUGIN_DEPENDS Core CppTools TextEditor ClangPchManager SOURCES ${TEST_SOURCES} diff --git a/tests/unit/unittest/CMakeLists.txt b/tests/unit/unittest/CMakeLists.txt index e28079d40b8..580e917cd03 100644 --- a/tests/unit/unittest/CMakeLists.txt +++ b/tests/unit/unittest/CMakeLists.txt @@ -1,3 +1,8 @@ +if (NOT QTC_CLANG_BUILDMODE_MATCH) + message(STATUS "Skipping unittest due to build mode mismatch") + return() +endif() + find_package(Googletest MODULE) find_package(GoogleBenchmark MODULE)