Skip to content

Commit 06318b0

Browse files
authored
Add support for Apple framework builds (#653)
Add CMake option PUGIXML_BUILD_APPLE_FRAMEWORKS to build PugiXML as Apple Frameworks. This is needed to be able to create iOS-derived compatible app bundles which need to embed PugiXML as framework, as using dylibs is prohibited by Apple.
1 parent 4bc1441 commit 06318b0

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

CMakeLists.txt

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ option(PUGIXML_NO_STL "Disable STL" OFF)
5050
option(PUGIXML_NO_EXCEPTIONS "Disable Exceptions" OFF)
5151
mark_as_advanced(PUGIXML_NO_XPATH PUGIXML_NO_STL PUGIXML_NO_EXCEPTIONS)
5252

53+
if (APPLE)
54+
option(PUGIXML_BUILD_APPLE_FRAMEWORK "Build as Apple Frameworks" OFF)
55+
endif()
56+
5357
set(PUGIXML_PUBLIC_DEFINITIONS
5458
$<$<BOOL:${PUGIXML_WCHAR_MODE}>:PUGIXML_WCHAR_MODE>
5559
$<$<BOOL:${PUGIXML_COMPACT}>:PUGIXML_COMPACT>
@@ -174,6 +178,16 @@ set_target_properties(${libs}
174178
EXCLUDE_FROM_ALL OFF)
175179
set(install-targets pugixml ${libs})
176180

181+
if (PUGIXML_BUILD_APPLE_FRAMEWORK)
182+
set_target_properties(${libs} PROPERTIES
183+
FRAMEWORK TRUE
184+
FRAMEWORK_VERSION ${PROJECT_VERSION}
185+
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER com.zeux.pugixml
186+
MACOSX_FRAMEWORK_IDENTIFIER com.zeux.pugixml
187+
MACOSX_FRAMEWORK_BUNDLE_VERSION ${PROJECT_VERSION}
188+
MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR})
189+
endif()
190+
177191
configure_package_config_file(
178192
"${PROJECT_SOURCE_DIR}/scripts/pugixml-config.cmake.in"
179193
"${PROJECT_BINARY_DIR}/pugixml-config.cmake"
@@ -234,7 +248,8 @@ if(PUGIXML_INSTALL)
234248
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${PUGIXML_RUNTIME_COMPONENT}
235249
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${PUGIXML_LIBRARY_COMPONENT} ${namelink-component}
236250
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${PUGIXML_DEVELOPMENT_COMPONENT}
237-
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}${versioned-dir})
251+
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}${versioned-dir}
252+
FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT runtime OPTIONAL)
238253

239254
install(EXPORT pugixml-targets
240255
NAMESPACE pugixml::

0 commit comments

Comments
 (0)