Я пишу статическую библиотеку, которая содержит некоторый общий код между несколькими проектами.Чтобы убедиться, что код в этой библиотеке работает должным образом, я хотел бы использовать Catch2, чтобы выполнить некоторое модульное тестирование на нем.
К сожалению, при попытке запустить тесты я столкнулся с проблемой, что вывод компиляцииФайл - это общая библиотека (.a), а не исполняемый файл.
Я уверен, что могу создать отдельный проект, который использует функции из моей статической библиотеки, и впоследствии выполнить тесты таким образом, но в идеале яМне бы хотелось, чтобы тесты и сборки конфигурации были как можно ближе друг к другу.
Поэтому мой вопрос: каков наилучший способ настроить мой проект так, чтобы я мог использовать Catch2 для модульного тестирования моей статической библиотеки?code?
Вот файл CMakeLists.txt моего проекта для справки:
project(sharedLib CXX)
find_package(OpenMP)
if (CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -lpthread -Wall -Wextra -Wpedantic -std=c++17")
endif()
if (MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fopenmp /W4 /std:c++latest")
endif()
include_directories (
src/
lib/Catch2/single_include/
)
file (GLOB_RECURSE LIBRARY_SOURCES src/*.cpp
src/*.c
tests/*.cpp)
add_library(${PROJECT_NAME} STATIC ${LIBRARY_SOURCES})
target_include_directories(${PROJECT_NAME} PUBLIC src/)