diff options
author | Jippe Holwerda <jippeholwerda@voormedia.com> | 2016-02-25 19:30:03 +0100 |
---|---|---|
committer | Jippe Holwerda <jippeholwerda@voormedia.com> | 2016-02-25 19:30:03 +0100 |
commit | 806c75652aa953f1eacb233330b0450a5d1a7e02 (patch) | |
tree | ba30eeb9e1b1a0643c5b6cb2cff684ec3295cea1 /CMakeLists.txt | |
parent | 8b60bbdce428af065f5501fbedd3de3c426073e4 (diff) |
Put CMakeLists.txt in the project root.
Having CMakeLists.txt in the project root makes it so much easier to use pugixml
as an external dependency in another CMake project.
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..bb16870 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,67 @@ +project(pugixml) + +cmake_minimum_required(VERSION 2.6) + +option(BUILD_SHARED_LIBS "Build shared instead of static library" OFF) +option(BUILD_TESTS "Build tests" OFF) +set(BUILD_DEFINES "" CACHE STRING "Build defines") + +if(MSVC) + option(STATIC_CRT "Use static CRT libraries" OFF) + + # Rewrite command line flags to use /MT if necessary + if(STATIC_CRT) + foreach(flag_var + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MD") + endforeach(flag_var) + endif() +endif() + +# Pre-defines standard install locations on *nix systems. +include(GNUInstallDirs) +mark_as_advanced(CLEAR CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR) + +set(HEADERS ../src/pugixml.hpp ../src/pugiconfig.hpp) +set(SOURCES ${HEADERS} ../src/pugixml.cpp) + +if(DEFINED BUILD_DEFINES) + foreach(DEFINE ${BUILD_DEFINES}) + add_definitions("-D" ${DEFINE}) + endforeach() +endif() + +if(BUILD_SHARED_LIBS) + add_library(pugixml SHARED ${SOURCES}) +else() + add_library(pugixml STATIC ${SOURCES}) +endif() + +# Enable C++11 long long for compilers that are capable of it +if(NOT ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION} STRLESS 3.1) + target_compile_features(pugixml PUBLIC cxx_long_long_type) +endif() + +set_target_properties(pugixml PROPERTIES VERSION 1.7 SOVERSION 1) + +install(TARGETS pugixml EXPORT pugixml-config + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) + +install(FILES ${HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +install(EXPORT pugixml-config DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pugixml) + +if(BUILD_TESTS) + file(GLOB TEST_SOURCES ../tests/*.cpp) + file(GLOB FUZZ_SOURCES ../tests/fuzz_*.cpp) + list(REMOVE_ITEM TEST_SOURCES ${FUZZ_SOURCES}) + + add_executable(check ${TEST_SOURCES}) + target_link_libraries(check pugixml) + add_custom_command(TARGET check POST_BUILD COMMAND check WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/..) +endif()
\ No newline at end of file |