cmake: Fix googletest's flags dllimport/dllexport declspec

This commit is contained in:
Corentin Le Molgat
2025-02-03 11:17:29 +01:00
committed by Mizux Seiha
parent 9be886380c
commit de4180fb6d

View File

@@ -1,3 +1,37 @@
diff --git a/googlemock/include/gmock/internal/gmock-port.h b/googlemock/include/gmock/internal/gmock-port.h
index e9d9e32..ca55646 100644
--- a/googlemock/include/gmock/internal/gmock-port.h
+++ b/googlemock/include/gmock/internal/gmock-port.h
@@ -85,11 +85,11 @@
// Macros for declaring flags.
#define GMOCK_DECLARE_bool_(name) \
- ABSL_DECLARE_FLAG(bool, GMOCK_FLAG_NAME_(name))
+ GTEST_API_ ABSL_DECLARE_FLAG(bool, GMOCK_FLAG_NAME_(name))
#define GMOCK_DECLARE_int32_(name) \
- ABSL_DECLARE_FLAG(int32_t, GMOCK_FLAG_NAME_(name))
+ GTEST_API_ ABSL_DECLARE_FLAG(int32_t, GMOCK_FLAG_NAME_(name))
#define GMOCK_DECLARE_string_(name) \
- ABSL_DECLARE_FLAG(std::string, GMOCK_FLAG_NAME_(name))
+ GTEST_API_ ABSL_DECLARE_FLAG(std::string, GMOCK_FLAG_NAME_(name))
#define GMOCK_FLAG_GET(name) ::absl::GetFlag(GMOCK_FLAG(name))
#define GMOCK_FLAG_SET(name, value) \
diff --git a/googletest/CMakeLists.txt b/googletest/CMakeLists.txt
index dce6a7c..65bfab2 100644
--- a/googletest/CMakeLists.txt
+++ b/googletest/CMakeLists.txt
@@ -147,6 +147,10 @@ target_include_directories(gtest SYSTEM INTERFACE
target_include_directories(gtest_main SYSTEM INTERFACE
"$<BUILD_INTERFACE:${dirs}>"
"$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>")
+if (BUILD_SHARED_LIBS OR type STREQUAL "SHARED")
+ target_compile_definitions(gtest_main INTERFACE
+ $<BUILD_INTERFACE:GTEST_LINKED_AS_SHARED_LIBRARY=1>)
+endif()
if(CMAKE_SYSTEM_NAME MATCHES "QNX" AND CMAKE_SYSTEM_VERSION VERSION_GREATER_EQUAL 7.1)
target_link_libraries(gtest PUBLIC regex)
endif()
diff --git a/googletest/cmake/internal_utils.cmake b/googletest/cmake/internal_utils.cmake
index 580ac1c..96fe3ac 100644
--- a/googletest/cmake/internal_utils.cmake
@@ -41,3 +75,22 @@ index 580ac1c..96fe3ac 100644
endif()
if (DEFINED GTEST_HAS_PTHREAD)
target_link_libraries(${name} PUBLIC Threads::Threads)
diff --git a/googletest/include/gtest/internal/gtest-port.h b/googletest/include/gtest/internal/gtest-port.h
index 8d27c2c..c1cd5e6 100644
--- a/googletest/include/gtest/internal/gtest-port.h
+++ b/googletest/include/gtest/internal/gtest-port.h
@@ -2287,11 +2287,11 @@ using TimeInMillis = int64_t; // Represents time in milliseconds.
// Macros for declaring flags.
#define GTEST_DECLARE_bool_(name) \
- ABSL_DECLARE_FLAG(bool, GTEST_FLAG_NAME_(name))
+ GTEST_API_ ABSL_DECLARE_FLAG(bool, GTEST_FLAG_NAME_(name))
#define GTEST_DECLARE_int32_(name) \
- ABSL_DECLARE_FLAG(int32_t, GTEST_FLAG_NAME_(name))
+ GTEST_API_ ABSL_DECLARE_FLAG(int32_t, GTEST_FLAG_NAME_(name))
#define GTEST_DECLARE_string_(name) \
- ABSL_DECLARE_FLAG(std::string, GTEST_FLAG_NAME_(name))
+ GTEST_API_ ABSL_DECLARE_FLAG(std::string, GTEST_FLAG_NAME_(name))
#define GTEST_FLAG_SAVER_ ::absl::FlagSaver