if( CMAKE_COMPILER_IS_GNUCXX ) #Get compiler version. execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GNUCXX_VERSION ) #-Werror=* was introduced -after- GCC 4.1.2 if( GNUCXX_VERSION VERSION_GREATER 4.1.2 ) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=strict-aliasing") endif() endif( CMAKE_COMPILER_IS_GNUCXX ) SET( JSONCPP_INCLUDE_DIR ../../include CACHE STRING "JsonCpp include directory") SET( PUBLIC_HEADERS ${JSONCPP_INCLUDE_DIR}/json/config.h ${JSONCPP_INCLUDE_DIR}/json/forwards.h ${JSONCPP_INCLUDE_DIR}/json/features.h ${JSONCPP_INCLUDE_DIR}/json/value.h ${JSONCPP_INCLUDE_DIR}/json/reader.h ${JSONCPP_INCLUDE_DIR}/json/writer.h ${JSONCPP_INCLUDE_DIR}/json/assertions.h ${JSONCPP_INCLUDE_DIR}/json/version.h ) SOURCE_GROUP( "Public API" FILES ${PUBLIC_HEADERS} ) SET(jsoncpp_sources json_tool.h json_reader.cpp json_valueiterator.inl json_value.cpp json_writer.cpp version.h.in) if(CMAKE_BUILD_TYPE EQUAL "Release") set(BUILD_SHARED_LIBS True) else() set(BUILD_SHARED_LIBS False) endif() IF(BUILD_SHARED_LIBS) 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 RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}) IF(NOT CMAKE_VERSION VERSION_LESS 2.8.11) TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib PUBLIC $ $) ENDIF(NOT CMAKE_VERSION VERSION_LESS 2.8.11) ELSE() ADD_LIBRARY(jsoncpp_lib STATIC ${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 ARCHIVE DESTINATION ${INSTALL_LIBRARY_DIR}) IF(NOT CMAKE_VERSION VERSION_LESS 2.8.11) TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib PUBLIC $ $ ) ENDIF(NOT CMAKE_VERSION VERSION_LESS 2.8.11) ENDIF()