0
0
mirror of https://github.com/zeux/pugixml.git synced 2024-12-27 22:01:03 +08:00

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.
This commit is contained in:
Arseny Kapoulkine 2017-11-12 20:21:46 -08:00
parent 492ebc22bc
commit 6016e2180e

View File

@ -42,6 +42,11 @@ else()
add_library(pugixml STATIC ${SOURCES}) add_library(pugixml STATIC ${SOURCES})
endif() 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 # 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;") 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) target_compile_features(pugixml PUBLIC cxx_long_long_type)