include(CMakeDependentOption) include(GNUInstallDirs) cmake_minimum_required(VERSION 3.0.2) project(rjp) set(rjp_VERSION_MAJOR 0) set(rjp_VERSION_MINOR 6) set(rjp_VERSION_REVISION 2) set(INCLUDE_PATH ${CMAKE_SOURCE_DIR}/include) configure_file( "${INCLUDE_PATH}/config.h.in" "${INCLUDE_PATH}/config.h" ) include_directories("${INCLUDE_PATH}") option(ENABLE_DIAGNOSTICS "Print diagnostic messages when parsing json to help identify issues" ON) option(ENABLE_SHARED "Build shared library" OFF) set(SOURCE_LIST "src/input.c" "src/output.c" "src/strings.c" "src/memory.c" "src/rjp.c") if(ENABLE_SHARED) add_library(rjp SHARED ${SOURCE_LIST}) else() add_library(rjp STATIC ${SOURCE_LIST}) endif() set_target_properties(rjp PROPERTIES PUBLIC_HEADER ${INCLUDE_PATH}/rjp.h) set_target_properties(rjp PROPERTIES SOVERSION "${rjp_VERSION_MAJOR}.${rjp_VERSION_MINOR}.${rjp_VERSION_REVISION}") target_compile_options(rjp PRIVATE -Wall -Wextra -pedantic) if(ENABLE_DIAGNOSTICS) target_compile_definitions(rjp PRIVATE RJP_DIAGNOSTICS) endif() install(TARGETS rjp ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) add_custom_target(uninstall cat install_manifest.txt | xargs rm)