| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- 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 "6.2.0")
- set(GENERIC_LIB_SOVERSION "6")
- ################################
- # Add definitions
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DTINYXML2_DEBUG")
- ################################
- # Add targets
- # By Default shared libray 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_STATIC_LIBS "build as static library" OFF)
- option(BUILD_TESTS "build xmltest (deprecated: Use BUILD_TESTING)" 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")
- if(BUILD_SHARED_LIBS)
- add_library(tinyxml2 SHARED tinyxml2.cpp tinyxml2.h)
- set_target_properties(tinyxml2 PROPERTIES
- COMPILE_DEFINITIONS "TINYXML2_EXPORT"
- VERSION "${GENERIC_LIB_VERSION}"
- SOVERSION "${GENERIC_LIB_SOVERSION}")
- 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_PREFIX}/include>)
- 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}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- endif()
- if(BUILD_STATIC_LIBS)
- add_library(tinyxml2_static STATIC tinyxml2.cpp tinyxml2.h)
- set_target_properties(tinyxml2_static PROPERTIES
- COMPILE_DEFINITONS "TINYXML2_EXPORT"
- VERSION "${GENERIC_LIB_VERSION}"
- SOVERSION "${GENERIC_LIB_SOVERSION}")
- set_target_properties( tinyxml2_static PROPERTIES OUTPUT_NAME tinyxml2 )
- target_compile_definitions(tinyxml2_static PUBLIC -D_CRT_SECURE_NO_WARNINGS)
- if(DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
- target_include_directories(tinyxml2_static PUBLIC
- $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
- $<INSTALL_INTERFACE:${CMAKE_INSTALL_PREFIX}/include>)
- if(MSVC)
- target_compile_definitions(tinyxml2_static 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_static
- FILE ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)
- install(TARGETS tinyxml2_static
- EXPORT ${CMAKE_PROJECT_NAME}Targets
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- endif()
- if(BUILD_TESTING AND BUILD_TESTS)
- add_executable(xmltest xmltest.cpp)
- if(BUILD_SHARED_LIBS)
- add_dependencies(xmltest tinyxml2)
- target_link_libraries(xmltest tinyxml2)
- else(BUILD_STATIC_LIBS)
- add_dependencies(xmltest tinyxml2_static)
- target_link_libraries(xmltest tinyxml2_static)
- endif()
- # Copy test resources and create test output directory
- add_custom_command(TARGET xmltest POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_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_BINARY_DIR}/resources"
- )
- add_test(NAME xmltest COMMAND xmltest WORKING_DIRECTORY $<TARGET_FILE_DIR:xmltest>)
- endif()
- install(FILES tinyxml2.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
- foreach(p LIB INCLUDE)
- set(var CMAKE_INSTALL_${p}DIR)
- if(NOT IS_ABSOLUTE "${${var}}")
- set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
- endif()
- endforeach()
- configure_file(tinyxml2.pc.in tinyxml2.pc @ONLY)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tinyxml2.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
- # 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()
- file(WRITE
- ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
- "include(\${CMAKE_CURRENT_LIST_DIR}/${CMAKE_PROJECT_NAME}Targets.cmake)\n")
- install(FILES
- ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}Config.cmake
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME})
- install(EXPORT ${CMAKE_PROJECT_NAME}Targets
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME})
|