]> granicus.if.org Git - libmatroska/commitdiff
#35: Fixed linking against libmatroska.dll (lib)
authorLars Benner <benner@simi.com>
Thu, 15 Aug 2019 18:15:03 +0000 (20:15 +0200)
committerLars Benner <benner@simi.com>
Thu, 15 Aug 2019 18:15:03 +0000 (20:15 +0200)
CMakeLists.txt
matroska/KaxConfig.h
matroska/KaxVersion.h

index c0f0558a6121fb276d6e54dd0cbb25b6767e2d2d..78a24886315a7f6701413301d661398d7a37bf90 100644 (file)
@@ -64,16 +64,25 @@ target_link_libraries(matroska PUBLIC EBML::ebml)
 set_target_properties(matroska PROPERTIES
   VERSION 6.0.0
   SOVERSION 6)
-target_include_directories(matroska PUBLIC
-  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
-  $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+target_include_directories(matroska
+  PRIVATE
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
+       PUBLIC
+    $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
+    $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
 if(MSVC)
   target_compile_definitions(matroska PRIVATE _CRT_SECURE_NO_WARNINGS)
 endif()
-if(BUILD_SHARED_LIBS)
-  target_compile_definitions(matroska PUBLIC MATROSKA_DLL)
-  set_target_properties(matroska PROPERTIES
-    DEFINE_SYMBOL MATROSKA_DLL_EXPORT)
+
+include(GenerateExportHeader)
+generate_export_header(matroska EXPORT_MACRO_NAME MATROSKA_DLL_API)
+target_sources(matroska
+  PRIVATE
+    ${CMAKE_CURRENT_BINARY_DIR}/matroska_export.h
+)
+
+if(NOT BUILD_SHARED_LIBS)
+  target_compile_definitions(matroska PUBLIC MATROSKA_STATIC_DEFINE)
 endif()
 
 install(TARGETS matroska
@@ -84,6 +93,7 @@ install(TARGETS matroska
 
 install(FILES ${libmatroska_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/matroska)
 install(FILES ${libmatroska_C_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/matroska/c)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/matroska_export.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/matroska)
 
 if(NOT DISABLE_PKGCONFIG)
   set(prefix ${CMAKE_INSTALL_PREFIX})
index 11b1eb29e1626302ffe9e6d25f6177cc7b7b76f2..57508d4d503517edfce9dc28765c68bed8cf5ba4 100644 (file)
 # define END_LIBMATROSKA_NAMESPACE   }
 #endif // NO_NAMESPACE
 
-// There are special implementations for certain platforms. For example on Windows
-// we use the Win32 file API. here we set the appropriate macros.
-#if defined(_WIN32)||defined(WIN32)
-
-# if defined(MATROSKA_DLL)
-#  if defined(MATROSKA_DLL_EXPORT)
-#   define MATROSKA_DLL_API __declspec(dllexport)
-#  else // MATROSKA_DLL_EXPORT
-#   define MATROSKA_DLL_API __declspec(dllimport)
-#  endif // MATROSKA_DLL_EXPORT
-# else // MATROSKA_DLL
-#  define MATROSKA_DLL_API
-# endif // MATROSKA_DLL
-
-#else
-# define MATROSKA_DLL_API
-#endif
+#include "matroska_export.h"
 
 #if !defined(MATROSKA_VERSION)
 #define MATROSKA_VERSION  2
index d5f584913bbade69659e291c0b93174f9363e376..7b72c467640f0931eb6f90c0c9cb1045b5d92dd6 100644 (file)
@@ -42,8 +42,8 @@ START_LIBMATROSKA_NAMESPACE
 
 #define LIBMATROSKA_VERSION 0x010502
 
-extern const std::string KaxCodeVersion;
-extern const std::string KaxCodeDate;
+extern const MATROSKA_DLL_API std::string KaxCodeVersion;
+extern const MATROSKA_DLL_API std::string KaxCodeDate;
 
 /*!
   \todo Improve the CRC/ECC system (backward and forward possible ?) to fit streaming/live writing/simple reading