From 6016e2180e7364f8e203aa2bac6ecb093be0e875 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Sun, 12 Nov 2017 20:21:46 -0800 Subject: CMake: Add __declspec(dllexport) for shared library builds This makes sure that MSVC shared library build actually exports all the needed symbols and generates import table. Somehow, this is actually enough to make pugixml link as a DLL - there's no need to specify __declspec(dllimport) even though pugixml exports classes via DLL. Fixes #113. --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 855045c..dbae2f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,11 @@ else() add_library(pugixml STATIC ${SOURCES}) endif() +# Export symbols for shared library builds +if(BUILD_SHARED_LIBS AND MSVC) + target_compile_definitions(pugixml PRIVATE "PUGIXML_API=__declspec(dllexport)") +endif() + # Enable C++11 long long for compilers that are capable of it if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1 AND ";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_long_long_type;") target_compile_features(pugixml PUBLIC cxx_long_long_type) -- cgit v1.2.3