forked from qt-creator/qt-creator
cmake: Fix building debug with release libclang
Parts of QC cannot be linked against a release build of clangTooling libs and vice versa when building on Windows. Check whether the provided libs match the current build mode and disable respective parts if necessary. Re-use this information to decide whether unittest should be build or not. Change-Id: Ibc2aab0d7886e78ebbf8f15a43152efad49f1eff Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -12,3 +12,15 @@ if (TARGET clangTooling AND NOT CLANGTOOLING_LINK_CLANG_DYLIB)
|
|||||||
elseif (TARGET clang-cpp)
|
elseif (TARGET clang-cpp)
|
||||||
set(CLANG_TOOLING_LIBS libclang clang-cpp)
|
set(CLANG_TOOLING_LIBS libclang clang-cpp)
|
||||||
endif()
|
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()
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
add_qtc_plugin(ClangFormat
|
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
|
DEPENDS Utils Qt5::Widgets clangFormat
|
||||||
INCLUDES "${CLANG_INCLUDE_DIRS}"
|
INCLUDES "${CLANG_INCLUDE_DIRS}"
|
||||||
PLUGIN_DEPENDS Core TextEditor CppEditor CppTools ProjectExplorer
|
PLUGIN_DEPENDS Core TextEditor CppEditor CppTools ProjectExplorer
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
add_qtc_plugin(ClangPchManager
|
add_qtc_plugin(ClangPchManager
|
||||||
BUILD_DEFAULT OFF
|
BUILD_DEFAULT OFF
|
||||||
CONDITION TARGET libclang
|
CONDITION TARGET libclang AND QTC_CLANG_BUILDMODE_MATCH
|
||||||
DEPENDS ClangSupport CPlusPlus
|
DEPENDS ClangSupport CPlusPlus
|
||||||
DEFINES CLANGPCHMANAGER_LIB
|
DEFINES CLANGPCHMANAGER_LIB
|
||||||
PLUGIN_DEPENDS Core CppTools
|
PLUGIN_DEPENDS Core CppTools
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
add_qtc_plugin(ClangRefactoring
|
add_qtc_plugin(ClangRefactoring
|
||||||
BUILD_DEFAULT OFF
|
BUILD_DEFAULT OFF
|
||||||
CONDITION TARGET libclang
|
CONDITION TARGET libclang AND QTC_CLANG_BUILDMODE_MATCH
|
||||||
DEPENDS ClangSupport CPlusPlus
|
DEPENDS ClangSupport CPlusPlus
|
||||||
PLUGIN_DEPENDS Core CppTools TextEditor ClangPchManager
|
PLUGIN_DEPENDS Core CppTools TextEditor ClangPchManager
|
||||||
SOURCES ${TEST_SOURCES}
|
SOURCES ${TEST_SOURCES}
|
||||||
|
@@ -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(Googletest MODULE)
|
||||||
find_package(GoogleBenchmark MODULE)
|
find_package(GoogleBenchmark MODULE)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user