cmake_minimum_required(VERSION 3.0.0) project(jsonrpcpp VERSION 1.1.1 LANGUAGES CXX) set(PROJECT_DESCRIPTION "C++ JSON-RPC 2.0 library") set(PROJECT_URL "https://github.com/badaix/jsonrpcpp") option(BUILD_SHARED_LIBS "Build jsonrpcpp as a shared library" ON) option(BUILD_STATIC_LIBS "Build jsonrpcpp as a static library" ON) option(BUILD_TESTS "Build tests (run tests with make test)" ON) if (NOT BUILD_SHARED_LIBS AND NOT BUILD_STATIC_LIBS) message(FATAL_ERROR "One or both of BUILD_SHARED_LIBS or BUILD_STATIC_LIBS" "must be set to ON to build") endif() if(NOT DEFINED CMAKE_INSTALL_LIBDIR) SET(CMAKE_INSTALL_LIBDIR lib CACHE PATH "Output directory for libraries") endif() if(NOT DEFINED CMAKE_INSTALL_INCLUDEDIR) SET(CMAKE_INSTALL_INCLUDEDIR include CACHE PATH "Output directory for header files") endif() include_directories(lib) set(JSONRPCPP_SOURCES lib/jsonrp.cpp) if (BUILD_SHARED_LIBS) add_library(jsonrpcpp SHARED "${JSONRPCPP_SOURCES}") target_compile_features(jsonrpcpp PUBLIC cxx_std_11) if(WIN32) install(TARGETS jsonrpcpp RUNTIME DESTINATION "${CMAKE_INSTALL_LIBDIR}") else() install(TARGETS jsonrpcpp LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() endif (BUILD_SHARED_LIBS) if (BUILD_STATIC_LIBS) add_library(jsonrpcpp-static STATIC "${JSONRPCPP_SOURCES}") set_target_properties(jsonrpcpp-static PROPERTIES OUTPUT_NAME jsonrpcpp) target_compile_features(jsonrpcpp-static PUBLIC cxx_std_11) install(TARGETS jsonrpcpp-static ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif (BUILD_STATIC_LIBS) if (BUILD_TESTS) if (NOT BUILD_STATIC_LIBS) message(FATAL_ERROR "Tests can only be built against static libraries " "(set BUILD_STATIC_LIBS=ON)") endif (NOT BUILD_STATIC_LIBS) add_executable(jsonrpctest jsonrpctest.cpp) target_link_libraries(jsonrpctest jsonrpcpp-static) target_compile_features(jsonrpctest PUBLIC cxx_std_11) endif (BUILD_TESTS) install(FILES lib/jsonrp.hpp lib/json.hpp DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/jsonrpcpp") configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/jsonrpcpp.pc.cmake" "${CMAKE_CURRENT_BINARY_DIR}/jsonrpcpp.pc" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/jsonrpcpp.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")