endif()
# Once we've done basic symbol/header searches let's add them in.
-configure_file(${CMAKE_SOURCE_DIR}/cmake/config.h.in ${CMAKE_BINARY_DIR}/config.h)
-message(STATUS "Written ${CMAKE_BINARY_DIR}/config.h")
-configure_file(${CMAKE_SOURCE_DIR}/cmake/json_config.h.in ${CMAKE_BINARY_DIR}/json_config.h)
-message(STATUS "Written ${CMAKE_BINARY_DIR}/json_config.h")
+configure_file(${PROJECT_SOURCE_DIR}/cmake/config.h.in ${PROJECT_BINARY_DIR}/config.h)
+message(STATUS "Written ${PROJECT_BINARY_DIR}/config.h")
+configure_file(${PROJECT_SOURCE_DIR}/cmake/json_config.h.in ${PROJECT_BINARY_DIR}/json_config.h)
+message(STATUS "Written ${PROJECT_BINARY_DIR}/json_config.h")
configure_package_config_file(
"cmake/Config.cmake.in"
- ${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake
+ ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)
endif()
set(JSON_C_PUBLIC_HEADERS
- ${CMAKE_BINARY_DIR}/config.h
- ${CMAKE_BINARY_DIR}/json_config.h
-
- ${CMAKE_SOURCE_DIR}/json.h
- ${CMAKE_SOURCE_DIR}/arraylist.h
- ${CMAKE_SOURCE_DIR}/debug.h
- ${CMAKE_SOURCE_DIR}/json_c_version.h
- ${CMAKE_SOURCE_DIR}/json_inttypes.h
- ${CMAKE_SOURCE_DIR}/json_object.h
- ${CMAKE_SOURCE_DIR}/json_object_iterator.h
- ${CMAKE_SOURCE_DIR}/json_pointer.h
- ${CMAKE_SOURCE_DIR}/json_tokener.h
- ${CMAKE_SOURCE_DIR}/json_util.h
- ${CMAKE_SOURCE_DIR}/linkhash.h
- ${CMAKE_SOURCE_DIR}/printbuf.h
+ ${PROJECT_BINARY_DIR}/config.h
+ ${PROJECT_BINARY_DIR}/json_config.h
+
+ ${PROJECT_SOURCE_DIR}/json.h
+ ${PROJECT_SOURCE_DIR}/arraylist.h
+ ${PROJECT_SOURCE_DIR}/debug.h
+ ${PROJECT_SOURCE_DIR}/json_c_version.h
+ ${PROJECT_SOURCE_DIR}/json_inttypes.h
+ ${PROJECT_SOURCE_DIR}/json_object.h
+ ${PROJECT_SOURCE_DIR}/json_object_iterator.h
+ ${PROJECT_SOURCE_DIR}/json_pointer.h
+ ${PROJECT_SOURCE_DIR}/json_tokener.h
+ ${PROJECT_SOURCE_DIR}/json_util.h
+ ${PROJECT_SOURCE_DIR}/linkhash.h
+ ${PROJECT_SOURCE_DIR}/printbuf.h
)
set(JSON_C_HEADERS
${JSON_C_PUBLIC_HEADERS}
- ${CMAKE_SOURCE_DIR}/json_object_private.h
- ${CMAKE_SOURCE_DIR}/random_seed.h
- ${CMAKE_SOURCE_DIR}/strerror_override.h
- ${CMAKE_SOURCE_DIR}/strerror_override_private.h
- ${CMAKE_SOURCE_DIR}/math_compat.h
- ${CMAKE_SOURCE_DIR}/snprintf_compat.h
- ${CMAKE_SOURCE_DIR}/strdup_compat.h
- ${CMAKE_SOURCE_DIR}/vasprintf_compat.h
+ ${PROJECT_SOURCE_DIR}/json_object_private.h
+ ${PROJECT_SOURCE_DIR}/random_seed.h
+ ${PROJECT_SOURCE_DIR}/strerror_override.h
+ ${PROJECT_SOURCE_DIR}/strerror_override_private.h
+ ${PROJECT_SOURCE_DIR}/math_compat.h
+ ${PROJECT_SOURCE_DIR}/snprintf_compat.h
+ ${PROJECT_SOURCE_DIR}/strdup_compat.h
+ ${PROJECT_SOURCE_DIR}/vasprintf_compat.h
)
set(JSON_C_SOURCES
- ${CMAKE_SOURCE_DIR}/arraylist.c
- ${CMAKE_SOURCE_DIR}/debug.c
- ${CMAKE_SOURCE_DIR}/json_c_version.c
- ${CMAKE_SOURCE_DIR}/json_object.c
- ${CMAKE_SOURCE_DIR}/json_object_iterator.c
- ${CMAKE_SOURCE_DIR}/json_pointer.c
- ${CMAKE_SOURCE_DIR}/json_tokener.c
- ${CMAKE_SOURCE_DIR}/json_util.c
- ${CMAKE_SOURCE_DIR}/json_visit.c
- ${CMAKE_SOURCE_DIR}/linkhash.c
- ${CMAKE_SOURCE_DIR}/printbuf.c
- ${CMAKE_SOURCE_DIR}/random_seed.c
- ${CMAKE_SOURCE_DIR}/strerror_override.c
+ ${PROJECT_SOURCE_DIR}/arraylist.c
+ ${PROJECT_SOURCE_DIR}/debug.c
+ ${PROJECT_SOURCE_DIR}/json_c_version.c
+ ${PROJECT_SOURCE_DIR}/json_object.c
+ ${PROJECT_SOURCE_DIR}/json_object_iterator.c
+ ${PROJECT_SOURCE_DIR}/json_pointer.c
+ ${PROJECT_SOURCE_DIR}/json_tokener.c
+ ${PROJECT_SOURCE_DIR}/json_util.c
+ ${PROJECT_SOURCE_DIR}/json_visit.c
+ ${PROJECT_SOURCE_DIR}/linkhash.c
+ ${PROJECT_SOURCE_DIR}/printbuf.c
+ ${PROJECT_SOURCE_DIR}/random_seed.c
+ ${PROJECT_SOURCE_DIR}/strerror_override.c
)
-include_directories(${CMAKE_SOURCE_DIR})
-include_directories(${CMAKE_BINARY_DIR})
+include_directories(${PROJECT_SOURCE_DIR})
+include_directories(${PROJECT_BINARY_DIR})
# If -DBUILD_SHARED_LIBS is set in the CMake command-line, we'll be able to create shared libs, otherwise this would
# generate static libs. Good enough for most use-cases unless there's some serious requirement to create both
${JSON_C_HEADERS}
)
+# If json-c is used as subroject it set to target correct interface -I flags and allow
+# to build external target without extra include_directories(...)
+set_property(TARGET ${PROJECT_NAME} PROPERTY
+ INTERFACE_INCLUDE_DIRECTORIES ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}
+)
+
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
)
if (UNIX OR MINGW OR CYGWIN)
- configure_file(json-c.pc.in json-c.pc @ONLY)
- set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
- install(FILES ${CMAKE_BINARY_DIR}/json-c.pc DESTINATION "${INSTALL_PKGCONFIG_DIR}")
+ configure_file(json-c.pc.in json-c.pc @ONLY)
+ set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files")
+ install(FILES ${PROJECT_BINARY_DIR}/json-c.pc DESTINATION "${INSTALL_PKGCONFIG_DIR}")
endif ()
install(FILES ${JSON_C_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/json-c)