diff options
author | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2017-11-12 20:21:46 -0800 |
---|---|---|
committer | Arseny Kapoulkine <arseny.kapoulkine@gmail.com> | 2017-11-12 20:21:46 -0800 |
commit | 6016e2180e7364f8e203aa2bac6ecb093be0e875 (patch) | |
tree | 8ba47291c76d4074fe73193604441b4b8ebe25b5 | |
parent | 492ebc22bc2a7bf6710d5e154dd6f37c120de4fd (diff) |
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.
-rw-r--r-- | CMakeLists.txt | 5 |
1 files changed, 5 insertions, 0 deletions
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) |