| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- 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)
- project(tinyxml2)
- include(GNUInstallDirs)
- #enable_testing()
- #CMAKE_BUILD_TOOL
- ################################
- # set lib version here
- set(GENERIC_LIB_VERSION "4.0.0")
- set(GENERIC_LIB_SOVERSION "4")
- ################################
- # Add common source
- include_directories("${CMAKE_CURRENT_SOURCE_DIR}/.")
- ################################
- # Add custom target to copy all data
- set(TARGET_DATA_COPY DATA_COPY)
- set(DATA_COPY_FILES)
- if(NOT ${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
- foreach(data dream.xml empty.xml utf8test.xml utf8testverify.xml)
- set(DATA_COPY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/resources/${data})
- set(DATA_COPY_DEST ${CMAKE_CURRENT_BINARY_DIR}/resources/${data})
- add_custom_command(
- OUTPUT ${DATA_COPY_DEST}
- COMMAND ${CMAKE_COMMAND}
- ARGS -E copy ${DATA_COPY_SRC} ${DATA_COPY_DEST}
- DEPENDS ${DATA_COPY_SRC})
- list(APPEND DATA_COPY_FILES ${DATA_COPY_DEST})
- endforeach(data)
- endif(NOT ${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
- add_custom_target(${TARGET_DATA_COPY} DEPENDS ${DATA_COPY_FILES})
- ################################
- # Add definitions
- if(MSVC)
- add_definitions(-D_CRT_SECURE_NO_WARNINGS)
- endif(MSVC)
- set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
- ################################
- # 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 -BUILD_SHARED_LIBS:BOOL:OFF
- # To build only static libs use cmake . -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_STATIC_LIBS:BOOL=ON
- option(BUILD_SHARED_LIBS "build as shared library" ON)
- option(BUILD_STATIC_LIBS "build as static library" OFF)
- 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 INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/.")
- endif()
- install(TARGETS tinyxml2
- 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 )
- if(DEFINED CMAKE_VERSION AND NOT "${CMAKE_VERSION}" VERSION_LESS "2.8.11")
- target_include_directories(tinyxml2_static INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/.")
- endif()
- install(TARGETS tinyxml2_static
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
- endif()
- add_executable(xmltest xmltest.cpp)
- if(BUILD_SHARED_LIBS)
- add_dependencies(xmltest tinyxml2)
- add_dependencies(xmltest ${TARGET_DATA_COPY})
- target_link_libraries(xmltest tinyxml2)
- else(BUILD_STATIC_LIBS)
- add_dependencies(xmltest tinyxml2_static)
- add_dependencies(xmltest ${TARGET_DATA_COPY})
- target_link_libraries(xmltest tinyxml2_static)
- endif()
- install(TARGETS DESTINATION ${CMAKE_INSTALL_BINDIR})
- 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)
- #add_test(xmltest ${SAMPLE_NAME} COMMAND $<TARGET_FILE:${SAMPLE_NAME}>)
- # uninstall target
- 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)
|