From: Lars Benner Date: Thu, 15 Aug 2019 18:15:03 +0000 (+0200) Subject: #35: Fixed linking against libmatroska.dll (lib) X-Git-Tag: release-1.6.0~30^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e30a6ddc0258b9709475b4edac077c9cd0fb4dbb;p=libmatroska #35: Fixed linking against libmatroska.dll (lib) --- diff --git a/CMakeLists.txt b/CMakeLists.txt index c0f0558..78a2488 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 - $ - $) +target_include_directories(matroska + PRIVATE + $ + PUBLIC + $ + $) 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}) diff --git a/matroska/KaxConfig.h b/matroska/KaxConfig.h index 11b1eb2..57508d4 100644 --- a/matroska/KaxConfig.h +++ b/matroska/KaxConfig.h @@ -44,23 +44,7 @@ # 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 diff --git a/matroska/KaxVersion.h b/matroska/KaxVersion.h index d5f5849..7b72c46 100644 --- a/matroska/KaxVersion.h +++ b/matroska/KaxVersion.h @@ -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