|
| 1 | +CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11) |
| 2 | +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules) |
| 3 | + |
| 4 | +PROJECT(RapidJSON CXX) |
| 5 | + |
| 6 | +set(LIB_MAJOR_VERSION "0") |
| 7 | +set(LIB_MINOR_VERSION "12") |
| 8 | +set(LIB_PATCH_VERSION "0") |
| 9 | +set(LIB_VERSION_STRING "${LIB_MAJOR_VERSION}.${LIB_MINOR_VERSION}.${LIB_PATCH_VERSION}") |
| 10 | + |
| 11 | +# compile in release with debug info mode by default |
| 12 | +SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build Type") |
| 13 | + |
| 14 | +option(RAPIDJSON_BUILD_DOC "Build rapidjson documentation." ON) |
| 15 | +option(RAPIDJSON_BUILD_EXAMPLES "Build rapidjson examples." ON) |
| 16 | +option(RAPIDJSON_BUILD_TESTS "Build rapidjson perftests and unittests." ON) |
| 17 | + |
| 18 | +#add extra search paths for libraries and includes |
| 19 | +SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "The directory the headers are installed in") |
| 20 | +SET(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE STRING "Directory where lib will install") |
| 21 | +SET(DOC_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}" CACHE PATH "Path to the documentation") |
| 22 | + |
| 23 | +IF(UNIX OR CYGWIN) |
| 24 | + SET(_CMAKE_INSTALL_DIR "${LIB_INSTALL_DIR}/cmake/${PROJECT_NAME}") |
| 25 | +ELSEIF(WIN32) |
| 26 | + SET(_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/cmake") |
| 27 | +ENDIF() |
| 28 | +SET(CMAKE_INSTALL_DIR "${_CMAKE_INSTALL_DIR}" CACHE PATH "The directory cmake fiels are installed in") |
| 29 | + |
| 30 | + |
| 31 | +include_directories(${CMAKE_SOURCE_DIR}/include) |
| 32 | +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${RAPIDJSON_CXX_FLAGS}") |
| 33 | + |
| 34 | +if(RAPIDJSON_BUILD_DOC) |
| 35 | + add_subdirectory(doc) |
| 36 | +endif() |
| 37 | + |
| 38 | +if(RAPIDJSON_BUILD_EXAMPLES) |
| 39 | + add_subdirectory(example) |
| 40 | +endif() |
| 41 | + |
| 42 | +if(RAPIDJSON_BUILD_TESTS) |
| 43 | + add_subdirectory(test) |
| 44 | + include(CTest) |
| 45 | +endif() |
| 46 | + |
| 47 | +# pkg-config |
| 48 | +IF (UNIX OR CYGWIN) |
| 49 | + CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pc.in |
| 50 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc |
| 51 | + @ONLY) |
| 52 | + INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc |
| 53 | + DESTINATION "${LIB_INSTALL_DIR}/pkgconfig" |
| 54 | + COMPONENT pkgconfig) |
| 55 | +ENDIF() |
| 56 | + |
| 57 | +install(FILES readme.md |
| 58 | + DESTINATION "${DOC_INSTALL_DIR}" |
| 59 | + COMPONENT doc) |
| 60 | + |
| 61 | +install(DIRECTORY include/rapidjson |
| 62 | + DESTINATION "${INCLUDE_INSTALL_DIR}" |
| 63 | + COMPONENT dev) |
| 64 | + |
| 65 | +install(DIRECTORY example/ |
| 66 | + DESTINATION "${DOC_INSTALL_DIR}/examples" |
| 67 | + COMPONENT examples) |
| 68 | + |
| 69 | +# Provide config and version files to be used by other applications |
| 70 | +# =============================== |
| 71 | + |
| 72 | +export(PACKAGE ${PROJECT_NAME}) |
| 73 | + |
| 74 | +# cmake-modules |
| 75 | +CONFIGURE_FILE(${PROJECT_NAME}Config.cmake.in |
| 76 | + ${PROJECT_NAME}Config.cmake |
| 77 | + @ONLY) |
| 78 | +CONFIGURE_FILE(${PROJECT_NAME}ConfigVersion.cmake.in |
| 79 | + ${PROJECT_NAME}ConfigVersion.cmake |
| 80 | + @ONLY) |
| 81 | +INSTALL(FILES |
| 82 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake |
| 83 | + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake |
| 84 | + DESTINATION "${CMAKE_INSTALL_DIR}" |
| 85 | + COMPONENT dev) |
0 commit comments