diff options
| author | Martin Hořeňovský | 2022-06-24 16:26:08 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2022-06-24 16:26:12 +0200 |
| commit | bea58bf8bbfca887f871c3aa2d720ba62c01f855 (patch) | |
| tree | e82e1e72735a9b05b36f33d9af4aa2a7307a1da7 /src | |
| parent | 34d9724058e02c6447fd7fa2a8e4ff7db0d50588 (diff) | |
| download | catch3-bea58bf8bbfca887f871c3aa2d720ba62c01f855.tar.gz | |
Allow building Catch2 as dynamic library
Also have a check that warns users if they try to combined dynamic
library with hidden visibility, which we do not support.
Closes #2397
Closes #2398
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d00d368b..57978ecb 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -285,9 +285,7 @@ set(REPORTER_SOURCES ) set(REPORTER_FILES ${REPORTER_HEADERS} ${REPORTER_SOURCES}) -# Fixme: STATIC because for dynamic, we would need to handle visibility -# and I don't want to do the annotations right now -add_library(Catch2 STATIC +add_library(Catch2 ${REPORTER_FILES} ${INTERNAL_FILES} ${BENCHMARK_HEADERS} @@ -340,7 +338,7 @@ target_include_directories(Catch2 ) -add_library(Catch2WithMain STATIC +add_library(Catch2WithMain ${SOURCES_DIR}/internal/catch_main.cpp ) add_build_reproducibility_settings(Catch2WithMain) @@ -431,3 +429,20 @@ endif() list(APPEND CATCH_WARNING_TARGETS Catch2 Catch2WithMain) set(CATCH_WARNING_TARGETS ${CATCH_WARNING_TARGETS} PARENT_SCOPE) + + +# We still do not support building dynamic library with hidden visibility +# so we want to check & warn users if they do this. However, we won't abort +# the configuration step so that we don't have to also provide an override. +if (BUILD_SHARED_LIBS) + get_target_property(_VisPreset Catch2 CXX_VISIBILITY_PRESET) + get_target_property(_ExportAll Catch2 WINDOWS_EXPORT_ALL_SYMBOLS) + if (MSVC AND NOT _ExportAll + OR _VisPreset STREQUAL "hidden") + + message(WARNING + "Catch2 does not support being built as a dynamic library with hidden" + " visibility. You have to ensure that visibility is handled yourself." + ) + endif() +endif() |