OPTION(JSONCPP_LIB_BUILD_SHARED "Build jsoncpp_lib as a shared library." OFF)
+OPTION(JSONCPP_LIB_BUILD_STATIC "Build jsoncpp_lib static library." ON)
+
IF(BUILD_SHARED_LIBS)
SET(JSONCPP_LIB_BUILD_SHARED ON)
ENDIF(BUILD_SHARED_LIBS)
-IF(JSONCPP_LIB_BUILD_SHARED)
- SET(JSONCPP_LIB_TYPE SHARED)
- ADD_DEFINITIONS( -DJSON_DLL_BUILD )
-ELSE(JSONCPP_LIB_BUILD_SHARED)
- SET(JSONCPP_LIB_TYPE STATIC)
-ENDIF(JSONCPP_LIB_BUILD_SHARED)
-
if( CMAKE_COMPILER_IS_GNUCXX )
#Get compiler version.
execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
SOURCE_GROUP( "Public API" FILES ${PUBLIC_HEADERS} )
-ADD_LIBRARY( jsoncpp_lib ${JSONCPP_LIB_TYPE}
- ${PUBLIC_HEADERS}
- json_tool.h
- json_reader.cpp
- json_batchallocator.h
- json_valueiterator.inl
- json_value.cpp
- json_writer.cpp
- version.h.in
- )
-SET_TARGET_PROPERTIES( jsoncpp_lib PROPERTIES OUTPUT_NAME jsoncpp )
-SET_TARGET_PROPERTIES( jsoncpp_lib PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR} )
+SET(jsoncpp_sources
+ json_tool.h
+ json_reader.cpp
+ json_batchallocator.h
+ json_valueiterator.inl
+ json_value.cpp
+ json_writer.cpp
+ version.h.in)
+
+IF(JSONCPP_LIB_BUILD_SHARED)
+ ADD_DEFINITIONS( -DJSON_DLL_BUILD )
+ ADD_LIBRARY(jsoncpp_lib SHARED ${PUBLIC_HEADERS} ${jsoncpp_sources})
+ SET_TARGET_PROPERTIES( jsoncpp_lib PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR})
+ SET_TARGET_PROPERTIES( jsoncpp_lib PROPERTIES OUTPUT_NAME jsoncpp )
+
+ INSTALL( TARGETS jsoncpp_lib ${INSTALL_EXPORT}
+ RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
+ LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
+ ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR})
+
+ IF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
+ TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib PUBLIC
+ $<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/${JSONCPP_INCLUDE_DIR}>)
+ ENDIF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
-IF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
- TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib PUBLIC
+ENDIF()
+
+IF(JSONCPP_LIB_BUILD_STATIC)
+ ADD_LIBRARY(jsoncpp_lib_static STATIC ${PUBLIC_HEADERS} ${jsoncpp_sources})
+ SET_TARGET_PROPERTIES( jsoncpp_lib_static PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR})
+ SET_TARGET_PROPERTIES( jsoncpp_lib_static PROPERTIES OUTPUT_NAME jsoncpp )
+
+ INSTALL( TARGETS jsoncpp_lib_static ${INSTALL_EXPORT}
+ RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
+ LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
+ ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR})
+
+ IF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
+ TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib_static PUBLIC
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/${JSONCPP_INCLUDE_DIR}>
)
-ENDIF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
+ ENDIF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
+
+ENDIF()
# Install instructions for this target
IF(JSONCPP_WITH_CMAKE_PACKAGE)
ELSE(JSONCPP_WITH_CMAKE_PACKAGE)
SET(INSTALL_EXPORT)
ENDIF(JSONCPP_WITH_CMAKE_PACKAGE)
-
-INSTALL( TARGETS jsoncpp_lib ${INSTALL_EXPORT}
- RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
- LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
- ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR}
-)