Как создать подпроект с тестами GTest?

У меня есть проект с главным cmake

cmake_minimum_required(VERSION 3.23)
project(MI VERSION 1.0.0)
enable_testing()
include(${PROJECT_SOURCE_DIR}/cmake/SetEnv.cmake)
add_subdirectory(${LIBRARY_FOLDER})
add_subdirectory(MI.Test)

И подпроект с файлом MI.Test/CMakeLists.txt

include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/refs/heads/main.zip
)

set(BUILD_SHARED_LIBS OFF)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)

add_executable(MI.Test 
    # ...
)

target_link_libraries(MI.Test PRIVATE 
    MI::Core
    gtest_main
    gmock_main
)

install(
  TARGETS MI.Test
  RUNTIME DESTINATION bin
)

include(GoogleTest)
gtest_discover_tests(MI.Test
    WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/_build/MI/Release"
)

В gtest_discover_tests мне приходится указывать WORKING_DIRECTORY, чтобы MI.Test.exe видел MI.Core.dll. Но мне кажется, что это неправильное решение.

Во-первых, приходится каждый раз вручную менять WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/_build/MI/Release" на WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}/_build/MI/Debug"

Во-вторых, я не могу собрать одновременно Release и Debug.

Подскажите, как правильно сделать подпроект с тестами?


Ответы (0 шт):