CMakeLists.txt 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. set(TARGET_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${TARGET})
  8. set(TARGET_LIB_DIR ${CMAKE_INSTALL_LIBDIR})
  9. set(TARGET_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
  10. set(TARGET_BINDIR ${CMAKE_INSTALL_BINDIR})
  11. add_library(${TARGET} microjson.cpp)
  12. set_target_properties(${TARGET} PROPERTIES VERSION ${PROJECT_VERSION} PUBLIC_HEADER "microjson.h" OUTPUT_NAME ${TARGET})
  13. target_include_directories(${TARGET} PUBLIC
  14. $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
  15. $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include/${TARGET}>
  16. $<INSTALL_INTERFACE:${TARGET_INCLUDE_DIR}>
  17. )
  18. install(TARGETS ${TARGET}
  19. EXPORT ${TARGET_EXPORT} COMPONENT dev
  20. ARCHIVE DESTINATION ${TARGET_LIB_DIR} COMPONENT lib
  21. PUBLIC_HEADER DESTINATION ${TARGET_INCLUDE_DIR} COMPONENT dev
  22. LIBRARY DESTINATION ${TARGET_LIB_DIR} COMPONENT lib
  23. RUNTIME DESTINATION ${TARGET_BINDIR} COMPONENT lib)
  24. install(EXPORT ${TARGET_EXPORT} FILE ${TARGET_EXPORT}.cmake DESTINATION ${TARGET_CMAKE_DIR} COMPONENT dev)
  25. include(CMakePackageConfigHelpers)
  26. configure_package_config_file(
  27. "${TARGET_CONFIG}.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_CONFIG}.cmake"
  28. INSTALL_DESTINATION "${TARGET_CMAKE_DIR}")
  29. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_CONFIG}.cmake" DESTINATION "${TARGET_CMAKE_DIR}" COMPONENT dev)
  30. export(TARGETS ${TARGET} FILE ${TARGET_EXPORT}.cmake)
  31. set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_PREFIX_PATH})
  32. add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/tests")