CMakeLists.txt 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. cmake_minimum_required(VERSION 3.6)
  2. project(microjson VERSION 0.1.0 LANGUAGES CXX)
  3. set(TARGET microjson)
  4. set(TARGET_STATIC ${TARGET}Static)
  5. set(TARGET_EXPORT ${TARGET}Targets)
  6. set(TARGET_CONFIG ${TARGET}Config)
  7. # Conan support, optional
  8. if(EXISTS "${CMAKE_BINARY_DIR}/conanbuildinfo.cmake")
  9. include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
  10. conan_basic_setup()
  11. endif()
  12. include(GNUInstallDirs)
  13. set(TARGET_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET})
  14. set(TARGET_LIB_DIR ${CMAKE_INSTALL_LIBDIR})
  15. set(TARGET_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
  16. set(TARGET_BINDIR ${CMAKE_INSTALL_BINDIR})
  17. set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
  18. set(CMAKE_CXX_STANDARD 11)
  19. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  20. add_library(${TARGET} microjson.cpp)
  21. set_target_properties(${TARGET} PROPERTIES VERSION ${PROJECT_VERSION} PUBLIC_HEADER "microjson.h" OUTPUT_NAME ${TARGET})
  22. target_include_directories(${TARGET} PUBLIC
  23. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
  24. $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include/${TARGET}>
  25. $<INSTALL_INTERFACE:${TARGET_INCLUDE_DIR}>
  26. )
  27. install(TARGETS ${TARGET}
  28. EXPORT ${TARGET_EXPORT} COMPONENT dev
  29. ARCHIVE DESTINATION ${TARGET_LIB_DIR} COMPONENT lib
  30. PUBLIC_HEADER DESTINATION ${TARGET_INCLUDE_DIR} COMPONENT dev
  31. LIBRARY DESTINATION ${TARGET_LIB_DIR} COMPONENT lib
  32. RUNTIME DESTINATION ${TARGET_BINDIR} COMPONENT lib)
  33. install(EXPORT ${TARGET_EXPORT} FILE ${TARGET_EXPORT}.cmake DESTINATION ${TARGET_CMAKE_DIR} COMPONENT dev)
  34. include(CMakePackageConfigHelpers)
  35. configure_package_config_file(
  36. "${TARGET_CONFIG}.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_CONFIG}.cmake"
  37. INSTALL_DESTINATION "${TARGET_CMAKE_DIR}")
  38. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}" COMPONENT dev)
  39. export(PACKAGE ${TARGET})
  40. export(TARGETS ${TARGET} FILE ${TARGET_EXPORT}.cmake)
  41. set(MICROJSON_MAKE_TESTS OFF CACHE BOOL "Enables tests")
  42. if(MICROJSON_MAKE_TESTS)
  43. find_package(GTest)
  44. if(GTest_FOUND)
  45. enable_testing()
  46. add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/tests")
  47. else()
  48. message(STATUS "Force disable test")
  49. endif()
  50. endif()