From 47979d31feb84c08c2aa94b4246c1c407a0a952e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20K=C3=B6hnenkamp?= Date: Sat, 16 Mar 2019 14:43:06 +0100 Subject: [PATCH] Work around gmock/gtest bug To work around bug: https://github.com/google/googletest/issues/930 Its not possible to link with gmock dynamically. Therefore we need separate kits for tests and building dlls. --- .vscode/cmake-kits.json | 23 +++++++++++++++++++---- CMakeLists.txt | 11 ++++++++--- tests/CMakeLists.txt | 11 +++++++---- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/.vscode/cmake-kits.json b/.vscode/cmake-kits.json index edb280b..4b7b543 100644 --- a/.vscode/cmake-kits.json +++ b/.vscode/cmake-kits.json @@ -1,9 +1,10 @@ [ { - "name": "Windows-VS2017-x64", + "name": "Windows-SharedLib-VS2017-x64", "cmakeSettings": { "ENABLE_TESTS": "OFF", - "BUILD_SHARED_LIBS": "YES" + "BUILD_SHARED_LIBS": "YES", + "CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS": "TRUE" }, "visualStudio": "VisualStudio.15.0", "visualStudioArchitecture": "amd64", @@ -13,10 +14,24 @@ } }, { - "name": "Windows-VS2017-x86", + "name": "Windows-SharedLib-VS2017-x86", "cmakeSettings": { "ENABLE_TESTS": "OFF", - "BUILD_SHARED_LIBS": "YES" + "BUILD_SHARED_LIBS": "YES", + "CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS": "TRUE" + }, + "visualStudio": "VisualStudio.15.0", + "visualStudioArchitecture": "x86", + "preferredGenerator" : { + "name" : "Visual Studio 15 2017", + "platform": "x86" + } + }, + { + "name": "Windows-StaticLib-VS2017-x86", + "cmakeSettings": { + "ENABLE_TESTS": "ON", + "BUILD_SHARED_LIBS": "NO" }, "visualStudio": "VisualStudio.15.0", "visualStudioArchitecture": "x86", diff --git a/CMakeLists.txt b/CMakeLists.txt index 279d3be..17ca76d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,17 @@ endif() #------------------- set(BENCHMARK_ENABLE_TESTING OFF) option(ENABLE_TESTS "Build with tests" ON) -if(MSVC) - set(ENABLE_TESTS OFF) -endif() +option(ENABLE_COMPONENT_TESTS "Build with component tests" ON) + if(ENABLE_TESTS) add_subdirectory(tests) add_subdirectory(bench) +endif() + +if(MSVC) + set(ENABLE_COMPONENT_TESTS OFF) +endif() +if(ENABLE_COMPONENT_TESTS) add_subdirectory(component_tests) endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a4db7d9..ea0dc81 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -42,9 +42,9 @@ endif(NOT USE_DOCKER) #------------------------------------------------------------- project( run_gtests - VERSION 1.0.0 - DESCRIPTION "GTests for ts-lib" - LANGUAGES CXX + VERSION 1.0.0 + DESCRIPTION "GTests for ts-lib" + LANGUAGES CXX ) enable_testing() @@ -71,6 +71,8 @@ endif(USE_DOCKER) # Now simply link against gtest, gmock, gtest_main or gmock_main as needed. Eg add_executable(${PROJECT_NAME}) +target_compile_definitions(${PROJECT_NAME} PRIVATE MPEG2TS_DLL_EXPORTS) + target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_11) target_sources(${PROJECT_NAME} @@ -84,7 +86,8 @@ target_sources(${PROJECT_NAME} TsParser_Tests.cc TsStatistics_Tests.cc TsUtilities_Tests.cc - H264Parser_Tests.cc) + H264Parser_Tests.cc +) target_include_directories(${PROJECT_NAME} PRIVATE ../include) target_include_directories(${PROJECT_NAME} PRIVATE ../src)