cmake_minimum_required(VERSION 2.8)

project(json CXX)

add_executable(json_unit
    src/json.hpp test/catch.hpp test/unit.cpp
)

if(MSVC)
    set(CMAKE_CXX_FLAGS
        "/EHsc"
    )

    STRING(REPLACE "/O2" "/Od" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})

    add_definitions(-D_SCL_SECURE_NO_WARNINGS)
else(MSVC)
    set(CMAKE_CXX_FLAGS
        "-std=c++11"
    )
endif(MSVC)

include_directories(
    src test
)

cmake_minimum_required(VERSION 2.8)

project(json CXX)

add_library(${PROJECT_NAME} INTERFACE IMPORTED GLOBAL)
set_target_properties(${PROJECT_NAME} PROPERTIES
    INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/src")

set(UNIT_TEST_NAME "json_unit")
add_executable(${UNIT_TEST_NAME}
    "test/catch.hpp" "test/unit.cpp")
set_target_properties(${UNIT_TEST_NAME} PROPERTIES
    CXX_STANDARD 11
    CXX_STANDARD_REQUIRED ON
    COMPILE_DEFINITIONS "$<$<CXX_COMPILER_ID:MSVC>:_SCL_SECURE_NO_WARNINGS>"
    COMPILE_OPTIONS "$<$<CXX_COMPILER_ID:MSVC>:/EHsc;$<$<CONFIG:Release>:/Od>>")
target_include_directories(${UNIT_TEST_NAME} PRIVATE "test")
target_link_libraries(${UNIT_TEST_NAME} ${PROJECT_NAME})

Refactor CMake listfile to define an interface imported library
Refactor CMake listfile to define an interface imported library

Define the library as an interface imported library so other targets
can use the library as a dependency and use the interface properties
of the library.
