Browse Source

Fix export define for Windows

Paul-Louis Ageneau 2 years ago
parent
commit
39872f1060
2 changed files with 23 additions and 7 deletions
  1. 9 5
      CMakeLists.txt
  2. 14 2
      include/rtc/rtc.h

+ 9 - 5
CMakeLists.txt

@@ -227,19 +227,23 @@ add_library(datachannel SHARED
 	${LIBDATACHANNEL_HEADERS}
 	${LIBDATACHANNEL_IMPL_SOURCES}
 	${LIBDATACHANNEL_IMPL_HEADERS})
+set_target_properties(datachannel PROPERTIES
+	VERSION ${PROJECT_VERSION}
+	SOVERSION ${PROJECT_VERSION}
+	CXX_STANDARD 17
+	CXX_VISIBILITY_PRESET default)
+target_compile_definitions(datachannel PRIVATE datachannel_EXPORTS)
+
 add_library(datachannel-static STATIC EXCLUDE_FROM_ALL
 	${LIBDATACHANNEL_SOURCES}
 	${LIBDATACHANNEL_HEADERS}
 	${LIBDATACHANNEL_IMPL_SOURCES}
 	${LIBDATACHANNEL_IMPL_HEADERS})
-
-set_target_properties(datachannel PROPERTIES
-	VERSION ${PROJECT_VERSION}
-	CXX_STANDARD 17
-	CXX_VISIBILITY_PRESET default)
 set_target_properties(datachannel-static PROPERTIES
 	VERSION ${PROJECT_VERSION}
 	CXX_STANDARD 17)
+target_compile_definitions(datachannel-static PRIVATE datachannel_EXPORTS)
+target_compile_definitions(datachannel-static PUBLIC RTC_STATIC)
 
 target_include_directories(datachannel PUBLIC
     $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>

+ 14 - 2
include/rtc/rtc.h

@@ -23,15 +23,27 @@
 extern "C" {
 #endif
 
+#ifdef RTC_STATIC
+#define RTC_EXPORT
+#else // dynamic library
+#ifdef _WIN32
+#ifdef datachannel_EXPORTS
+#define RTC_EXPORT __declspec(dllexport) // building the library
+#else
+#define RTC_EXPORT __declspec(dllimport) // using the library
+#endif
+#else // not WIN32
+#define RTC_EXPORT
+#endif
+#endif
+
 #ifdef _WIN32
-#define RTC_EXPORT __declspec(dllexport)
 #ifdef CAPI_STDCALL
 #define RTC_API __stdcall
 #else
 #define RTC_API
 #endif
 #else // not WIN32
-#define RTC_EXPORT
 #define RTC_API
 #endif