| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- IF(BIICODE)
- ADD_BIICODE_TARGETS()
- if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/resources)
- file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/resources DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
- ENDIF()
- RETURN()
- ENDIF(BIICODE)
- cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
- cmake_policy(VERSION 2.6)
- if(POLICY CMP0063)
- cmake_policy(SET CMP0063 OLD)
- endif()
- project(tinyxml2)
- include(GNUInstallDirs)
- include(CTest)
- #enable_testing()
- #CMAKE_BUILD_TOOL
- ################################
- # set lib version here
- set(GENERIC_LIB_VERSION "7.1.0")
- set(GENERIC_LIB_SOVERSION "7")
- ################################
- # Add definitions
- ################################
- # Add targets
- # By Default shared library is being built
- # To build static libs also - Do cmake . -DBUILD_STATIC_LIBS:BOOL=ON
- # User can choose not to build shared library by using cmake -DBUILD_SHARED_LIBS:BOOL=OFF
- # To build only static libs use cmake . -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_STATIC_LIBS:BOOL=ON
- # To build the tests, use cmake . -DBUILD_TESTS:BOOL=ON
- # To disable the building of the tests, use cmake . -DBUILD_TESTS:BOOL=OFF
- option(BUILD_SHARED_LIBS "build as shared library" ON)
- option(BUILD_TESTS "build xmltest (deprecated: Use BUILD_TESTING)" ON)
- # To allow using tinyxml in another shared library
- set(CMAKE_POSITION_INDEPENDENT_CODE ON)
- set(CMAKE_CXX_VISIBILITY_PRESET hidden)
- set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
- # to distinguish between debug and release lib
- set(CMAKE_DEBUG_POSTFIX "d")
- add_library(tinyxml2 tinyxml2.cpp tinyxml2.h)
- set_target_properties(tinyxml2 PROPERTIES
- COMPILE_DEFINITIONS "TINYXML2_EXPORT"
- VERSION "${GENERIC_LIB_VERSION}"
- SOVERSION "${GENERIC_LIB_SOVERSION}")
- target_compile_definitions(tinyxml2 PUBLIC $<$<CONFIG:Debug>:TINYXML2_DEBUG>)
- if(DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
- target_include_directories(tinyxml2 PUBLIC
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
- if(MSVC)
- target_compile_definitions(tinyxml2 PUBLIC -D_CRT_SECURE_NO_WARNINGS)
- endif(MSVC)
- else()
- include_directories(${PROJECT_SOURCE_DIR})
- if(MSVC)
- add_definitions(-D_CRT_SECURE_NO_WARNINGS)
- endif(MSVC)
- endif()
- # export targets for find_package config mode
- export(TARGETS tinyxml2
- FILE ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)
- install(TARGETS tinyxml2
- EXPORT ${CMAKE_PROJECT_NAME}Targets
- RUNTIME
- DESTINATION ${CMAKE_INSTALL_BINDIR}
- COMPONENT tinyxml2_runtime
- LIBRARY
- DESTINATION ${CMAKE_INSTALL_LIBDIR}
- COMPONENT tinyxml2_libraries
- ARCHIVE
- DESTINATION ${CMAKE_INSTALL_LIBDIR}
- COMPONENT tinyxml2_libraries)
- if(BUILD_TESTING AND BUILD_TESTS)
- add_executable(xmltest xmltest.cpp)
- add_dependencies(xmltest tinyxml2)
- target_link_libraries(xmltest tinyxml2)
- # Copy test resources and create test output directory
- add_custom_command(TARGET xmltest POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/resources $<TARGET_FILE_DIR:xmltest>/resources
- COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:xmltest>/resources/out
- COMMENT "Configuring xmltest resources directory: ${CMAKE_CURRENT_BINARY_DIR}/resources"
- )
- add_test(NAME xmltest COMMAND xmltest WORKING_DIRECTORY $<TARGET_FILE_DIR:xmltest>)
- endif()
- install(FILES tinyxml2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT tinyxml2_headers)
- configure_file(tinyxml2.pc.in tinyxml2.pc @ONLY)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tinyxml2.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT tinyxml2_config)
- # uninstall target
- if(NOT TARGET uninstall)
- configure_file(
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
- "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
- IMMEDIATE @ONLY)
- add_custom_target(uninstall
- COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
- endif()
- include(CMakePackageConfigHelpers)
- set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
- configure_package_config_file(
- "Config.cmake.in"
- "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake"
- INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}"
- )
- write_basic_package_version_file(
- "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake"
- VERSION ${GENERIC_LIB_VERSION}
- COMPATIBILITY SameMajorVersion
- )
- install(FILES
- ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
- ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}ConfigVersion.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
- COMPONENT tinyxml2_config)
- install(EXPORT ${CMAKE_PROJECT_NAME}Targets NAMESPACE tinyxml2::
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}
- COMPONENT tinyxml2_config)
|