CMake: Allow standalone build of unittests

tests/unit/CMakeLists.txt needs to be opened for standalone usage.

Change-Id: Ib763dedd09ee00bc793b56d87456981b71f4004c
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
This commit is contained in:
Cristian Adam
2021-06-13 15:35:56 +02:00
parent 5ae15f945f
commit 4bfcea22bf
7 changed files with 88 additions and 35 deletions

View File

@@ -112,6 +112,6 @@ public:
CLANGSUPPORT_EXPORT QDebug operator<<(QDebug debug, const CodeCompletionChunk &chunk);
std::ostream &operator<<(std::ostream &os, const CodeCompletionChunk::Kind &kind);
CLANGSUPPORT_EXPORT std::ostream &operator<<(std::ostream &os, const CodeCompletionChunk::Kind &kind);
} // namespace ClangBackEnd

View File

@@ -29,9 +29,11 @@
#include <exception>
#include "clangsupport_global.h"
namespace ClangBackEnd {
class ProcessException : public std::exception
class CLANGSUPPORT_EXPORT ProcessException : public std::exception
{
public:
ProcessException() = default;

View File

@@ -29,6 +29,8 @@
#include <vector>
#include "clangsupport_global.h"
QT_BEGIN_NAMESPACE
class QDataStream;
class QIODevice;
@@ -38,7 +40,7 @@ namespace ClangBackEnd {
class MessageEnvelop;
class ReadMessageBlock
class CLANGSUPPORT_EXPORT ReadMessageBlock
{
public:
ReadMessageBlock(QIODevice *ioDevice = nullptr);

View File

@@ -30,6 +30,8 @@
#include <QVariant>
#include "clangsupport_global.h"
namespace ClangBackEnd {
class ToolTipInfo
@@ -106,6 +108,6 @@ public:
QDebug operator<<(QDebug debug, const ToolTipInfo &message);
std::ostream &operator<<(std::ostream &os, const ToolTipInfo &message);
const char *qdocCategoryToString(ToolTipInfo::QdocCategory category);
CLANGSUPPORT_EXPORT const char *qdocCategoryToString(ToolTipInfo::QdocCategory category);
} // namespace ClangBackEnd

View File

@@ -28,6 +28,8 @@
#include <QByteArray>
#include <QtGlobal>
#include "clangsupport_global.h"
QT_BEGIN_NAMESPACE
class QVariant;
class QDataStream;
@@ -39,7 +41,7 @@ namespace ClangBackEnd {
class MessageEnvelop;
class WriteMessageBlock
class CLANGSUPPORT_EXPORT WriteMessageBlock
{
public:
WriteMessageBlock(QIODevice *ioDevice = nullptr);

View File

@@ -1,2 +1,40 @@
cmake_minimum_required(VERSION 3.10)
if (NOT QT_CREATOR_API_DEFINED)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake")
project(unit)
enable_testing()
# Needed for pch
set(QtCreator_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../")
option(BUILD_WITH_PCH "Build with precompiled headers" ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(BUILD_EXECUTABLES echo)
set(IMPLICIT_DEPENDS Qt5::Test)
include(QtCreatorIDEBranding)
include(QtCreatorAPI)
set(WITH_TESTS ON)
set(GOOGLETEST_DIR ${CMAKE_CURRENT_LIST_DIR}/unittest/3rdparty/googletest)
find_package(Clang MODULE)
find_package(Qt5 COMPONENTS Core Widgets Network Qml Concurrent Test Xml MODULE)
find_package(Threads)
endif()
add_subdirectory(echoserver)
add_subdirectory(unittest)

View File

@@ -14,7 +14,9 @@ if (NOT Googletest_FOUND)
endif()
if (MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
elseif (MINGW)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj")
endif()
add_qtc_test(unittest GTEST
@@ -31,7 +33,7 @@ add_qtc_test(unittest GTEST
QT_RESTRICTED_CAST_FROM_ASCII
UNIT_TESTS
DONT_CHECK_MESSAGE_COUNTER
QTC_RESOURCE_DIR="${PROJECT_SOURCE_DIR}/share/qtcreator"
QTC_RESOURCE_DIR="${CMAKE_CURRENT_LIST_DIR}/../../../share/qtcreator"
TESTDATA_DIR="${CMAKE_CURRENT_BINARY_DIR}/data"
ECHOSERVER="$<TARGET_FILE_DIR:echo>/echo"
CPPTOOLS_JSON="${CMAKE_CURRENT_BINARY_DIR}/CppTools.json"
@@ -139,23 +141,22 @@ function(extend_qtc_test_with_target_sources target)
)
endfunction()
foreach(clang_tools_library clangbackend_lib)
extend_qtc_test_with_target_sources(${clang_tools_library}
DEFINES
CLANGSUPPORT_BUILD_LIB
INCLUDES
$<TARGET_PROPERTY:ClangSupport,INTERFACE_INCLUDE_DIRECTORIES>
)
endforeach()
if (NOT TARGET clangbackend_lib)
add_subdirectory(../../../src/tools/clangbackend/source ${CMAKE_CURRENT_BINARY_DIR}/clangbackend)
endif()
extend_qtc_test(unittest DEPENDS clangbackend_lib)
extend_qtc_test_with_target_sources(Sqlite)
extend_qtc_test(unittest DEFINES _HAVE_SQLITE_CONFIG_H)
if (NOT TARGET Sqlite)
add_subdirectory(../../../src/libs/sqlite ${CMAKE_CURRENT_BINARY_DIR}/sqlite)
endif()
extend_qtc_test_with_target_sources(Sqlite
DEFINES _HAVE_SQLITE_CONFIG_H
)
if (APPLE)
extend_qtc_test(unittest DEFINES _BSD_SOURCE)
extend_qtc_test(unittest DEFINES _BSD_SOURCE)
elseif (UNIX)
extend_qtc_test(unittest DEFINES _POSIX_C_SOURCE=200809L _GNU_SOURCE _DEFAULT_SOURCE)
extend_qtc_test(unittest DEFINES _POSIX_C_SOURCE=200809L _GNU_SOURCE _DEFAULT_SOURCE)
endif()
# Do not work on the source directory data
@@ -166,7 +167,7 @@ add_custom_command(TARGET unittest POST_BUILD
)
# create fake CppTools.json for the mime type definitions
file(READ "${PROJECT_SOURCE_DIR}/src/plugins/cpptools/CppTools.json.in" plugin_json_in)
file(READ "../../../src/plugins/cpptools/CppTools.json.in" plugin_json_in)
string(REPLACE "\\\"" "\"" plugin_json_in ${plugin_json_in})
string(REPLACE "\\'" "'" plugin_json_in ${plugin_json_in})
string(REPLACE "$$QTCREATOR_VERSION" "${IDE_VERSION}" plugin_json_in ${plugin_json_in})
@@ -253,6 +254,7 @@ finalize_qtc_gtest(unittest ".c$")
# Path needs to be before CppTools
target_include_directories(unittest
PRIVATE
BEFORE ../../../src/tools/clangbackend/source
BEFORE ../../../src/plugins
)
@@ -329,17 +331,21 @@ extend_qtc_test(unittest
"${QmlDesignerDir}/designercore/include/model.h"
)
extend_qtc_test_with_target_sources(Utils DEFINES QTCREATOR_UTILS_STATIC_LIB "QTC_REL_TOOLS_PATH=\"${RELATIVE_LIBEXEC_PATH}\"")
extend_qtc_test(unittest
CONDITION APPLE
DEPENDS ${FWFoundation} ${FWAppKit}
)
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)
if (NOT TARGET Utils)
add_subdirectory(../../../src/libs/utils ${CMAKE_CURRENT_BINARY_DIR}/utils)
endif()
if (NOT TARGET CPlusPlus)
add_subdirectory(../../../src/libs/3rdparty/cplusplus ${CMAKE_CURRENT_BINARY_DIR}/3rd_cplusplus)
add_subdirectory(../../../src/libs/cplusplus ${CMAKE_CURRENT_BINARY_DIR}/cplusplus)
endif()
if (NOT TARGET ClangSupport)
add_subdirectory(../../../src/libs/clangsupport ${CMAKE_CURRENT_BINARY_DIR}/clangsupport)
endif()
extend_qtc_test(unittest DEPENDS Utils CPlusPlus ClangSupport)
extend_qtc_test(unittest
SOURCES_PREFIX_FROM_TARGET ClangCodeModel
SOURCES_PREFIX ../../../src/plugins/clangcodemodel
SOURCES
clangactivationsequencecontextprocessor.cpp clangactivationsequencecontextprocessor.h
clangactivationsequenceprocessor.cpp clangactivationsequenceprocessor.h
@@ -365,7 +371,7 @@ extend_qtc_test(unittest
)
extend_qtc_test(unittest
SOURCES_PREFIX_FROM_TARGET Core
SOURCES_PREFIX ../../../src/plugins/coreplugin
DEFINES CORE_STATIC_LIBRARY
SOURCES
coreicons.cpp coreicons.h
@@ -374,7 +380,7 @@ extend_qtc_test(unittest
)
extend_qtc_test(unittest
SOURCES_PREFIX_FROM_TARGET CppTools
SOURCES_PREFIX ../../../src/plugins/cpptools
DEFINES CPPTOOLS_STATIC_LIBRARY
SOURCES
cppprojectfile.cpp cppprojectfile.h
@@ -389,15 +395,16 @@ extend_qtc_test(unittest
)
extend_qtc_test(unittest
SOURCES_PREFIX_FROM_TARGET ProjectExplorer
SOURCES_PREFIX ../../../src/plugins/projectexplorer
DEFINES PROJECTEXPLORER_STATIC_LIBRARY
SOURCES
projectmacro.cpp projectmacro.h
)
extend_qtc_test(unittest
SOURCES_PREFIX_FROM_TARGET ClangFormat
DEFINES CLANGPCHMANAGER_STATIC_LIB
SOURCES_PREFIX ../../../src/plugins/clangformat
CONDITION TARGET libclang
DEPENDS ${CLANG_TOOLING_LIBS}
SOURCES
clangformatconstants.h
clangformatbaseindenter.cpp clangformatbaseindenter.h