mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2025-05-03 15:58:22 +02:00
Merge pull request #562 from SoapGentoo/cmake-fixes
Replace current install variables with GNUInstallDirs
This commit is contained in:
commit
d167a09b1c
@ -23,7 +23,10 @@ addons:
|
|||||||
sources:
|
sources:
|
||||||
- ubuntu-toolchain-r-test
|
- ubuntu-toolchain-r-test
|
||||||
- llvm-toolchain-precise-3.5
|
- llvm-toolchain-precise-3.5
|
||||||
|
- george-edison55-precise-backports # cmake 3.2.3
|
||||||
packages:
|
packages:
|
||||||
|
- cmake
|
||||||
|
- cmake-data
|
||||||
- gcc-4.9
|
- gcc-4.9
|
||||||
- g++-4.9
|
- g++-4.9
|
||||||
- clang-3.5
|
- clang-3.5
|
||||||
|
108
CMakeLists.txt
108
CMakeLists.txt
@ -1,6 +1,6 @@
|
|||||||
# vim: et ts=4 sts=4 sw=4 tw=0
|
# vim: et ts=4 sts=4 sw=4 tw=0
|
||||||
|
|
||||||
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.5)
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
|
||||||
PROJECT(jsoncpp)
|
PROJECT(jsoncpp)
|
||||||
ENABLE_TESTING()
|
ENABLE_TESTING()
|
||||||
|
|
||||||
@ -27,20 +27,10 @@ IF(APPLE)
|
|||||||
SET(CMAKE_MACOSX_RPATH 1)
|
SET(CMAKE_MACOSX_RPATH 1)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
SET(DEBUG_LIBNAME_SUFFIX "" CACHE STRING "Optional suffix to append to the library name for a debug build")
|
# Adhere to GNU filesystem layout conventions
|
||||||
SET(LIB_SUFFIX "" CACHE STRING "Optional arch-dependent suffix for the library installation directory")
|
INCLUDE(GNUInstallDirs)
|
||||||
|
|
||||||
SET(RUNTIME_INSTALL_DIR bin
|
SET(DEBUG_LIBNAME_SUFFIX "" CACHE STRING "Optional suffix to append to the library name for a debug build")
|
||||||
CACHE PATH "Install dir for executables and dlls")
|
|
||||||
SET(ARCHIVE_INSTALL_DIR lib${LIB_SUFFIX}
|
|
||||||
CACHE PATH "Install dir for static libraries")
|
|
||||||
SET(LIBRARY_INSTALL_DIR lib${LIB_SUFFIX}
|
|
||||||
CACHE PATH "Install dir for shared libraries")
|
|
||||||
SET(INCLUDE_INSTALL_DIR include
|
|
||||||
CACHE PATH "Install dir for headers")
|
|
||||||
SET(PACKAGE_INSTALL_DIR lib${LIB_SUFFIX}/cmake
|
|
||||||
CACHE PATH "Install dir for cmake package config files")
|
|
||||||
MARK_AS_ADVANCED( RUNTIME_INSTALL_DIR ARCHIVE_INSTALL_DIR INCLUDE_INSTALL_DIR PACKAGE_INSTALL_DIR )
|
|
||||||
|
|
||||||
# Set variable named ${VAR_NAME} to value ${VALUE}
|
# Set variable named ${VAR_NAME} to value ${VALUE}
|
||||||
FUNCTION(set_using_dynamic_name VAR_NAME VALUE)
|
FUNCTION(set_using_dynamic_name VAR_NAME VALUE)
|
||||||
@ -86,70 +76,76 @@ CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/version.in"
|
|||||||
"${PROJECT_SOURCE_DIR}/version"
|
"${PROJECT_SOURCE_DIR}/version"
|
||||||
NEWLINE_STYLE UNIX )
|
NEWLINE_STYLE UNIX )
|
||||||
|
|
||||||
macro(UseCompilationWarningAsError)
|
MACRO(UseCompilationWarningAsError)
|
||||||
if ( MSVC )
|
IF(MSVC)
|
||||||
# Only enabled in debug because some old versions of VS STL generate
|
# Only enabled in debug because some old versions of VS STL generate
|
||||||
# warnings when compiled in release configuration.
|
# warnings when compiled in release configuration.
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /WX ")
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /WX ")
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
|
||||||
if (JSONCPP_WITH_STRICT_ISO)
|
IF(JSONCPP_WITH_STRICT_ISO)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic-errors")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic-errors")
|
||||||
endif ()
|
ENDIF()
|
||||||
endif()
|
ENDIF()
|
||||||
endmacro()
|
ENDMACRO()
|
||||||
|
|
||||||
# Include our configuration header
|
# Include our configuration header
|
||||||
INCLUDE_DIRECTORIES( ${jsoncpp_SOURCE_DIR}/include )
|
INCLUDE_DIRECTORIES( ${jsoncpp_SOURCE_DIR}/include )
|
||||||
|
|
||||||
if ( MSVC )
|
IF(MSVC)
|
||||||
# Only enabled in debug because some old versions of VS STL generate
|
# Only enabled in debug because some old versions of VS STL generate
|
||||||
# unreachable code warning when compiled in release configuration.
|
# unreachable code warning when compiled in release configuration.
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 ")
|
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 ")
|
||||||
endif()
|
ENDIF()
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
# Require C++11 support, prefer ISO C++ over GNU variants,
|
||||||
# using regular Clang or AppleClang
|
# as relying solely on ISO C++ is more portable.
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wconversion -Wshadow -Werror=conversion -Werror=sign-compare")
|
SET(CMAKE_CXX_STANDARD 11)
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
SET(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
# using GCC
|
SET(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wconversion -Wshadow -Wextra")
|
|
||||||
# not yet ready for -Wsign-conversion
|
|
||||||
|
|
||||||
if (JSONCPP_WITH_STRICT_ISO AND NOT JSONCPP_WITH_WARNING_AS_ERROR)
|
IF(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=conversion -pedantic")
|
# using regular Clang or AppleClang
|
||||||
endif ()
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Werror=conversion -Werror=sign-compare")
|
||||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
# using Intel compiler
|
# using GCC
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wconversion -Wshadow -Wextra -Werror=conversion")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Wextra")
|
||||||
|
# not yet ready for -Wsign-conversion
|
||||||
|
|
||||||
if (JSONCPP_WITH_STRICT_ISO AND NOT JSONCPP_WITH_WARNING_AS_ERROR)
|
IF(JSONCPP_WITH_STRICT_ISO AND NOT JSONCPP_WITH_WARNING_AS_ERROR)
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=conversion -pedantic")
|
||||||
endif ()
|
ENDIF()
|
||||||
endif()
|
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||||
|
# using Intel compiler
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Wextra -Werror=conversion")
|
||||||
|
|
||||||
find_program(CCACHE_FOUND ccache)
|
IF(JSONCPP_WITH_STRICT_ISO AND NOT JSONCPP_WITH_WARNING_AS_ERROR)
|
||||||
if(CCACHE_FOUND)
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
ENDIF()
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
ENDIF()
|
||||||
endif(CCACHE_FOUND)
|
|
||||||
|
FIND_PROGRAM(CCACHE_FOUND ccache)
|
||||||
|
IF(CCACHE_FOUND)
|
||||||
|
SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
||||||
|
SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
||||||
|
ENDIF(CCACHE_FOUND)
|
||||||
|
|
||||||
IF(JSONCPP_WITH_WARNING_AS_ERROR)
|
IF(JSONCPP_WITH_WARNING_AS_ERROR)
|
||||||
UseCompilationWarningAsError()
|
UseCompilationWarningAsError()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF(JSONCPP_WITH_PKGCONFIG_SUPPORT)
|
IF(JSONCPP_WITH_PKGCONFIG_SUPPORT)
|
||||||
CONFIGURE_FILE(
|
CONFIGURE_FILE(
|
||||||
"pkg-config/jsoncpp.pc.in"
|
"pkg-config/jsoncpp.pc.in"
|
||||||
"pkg-config/jsoncpp.pc"
|
"pkg-config/jsoncpp.pc"
|
||||||
@ONLY)
|
@ONLY)
|
||||||
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkg-config/jsoncpp.pc"
|
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/pkg-config/jsoncpp.pc"
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig")
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF(JSONCPP_WITH_CMAKE_PACKAGE)
|
IF(JSONCPP_WITH_CMAKE_PACKAGE)
|
||||||
INSTALL(EXPORT jsoncpp
|
INSTALL(EXPORT jsoncpp
|
||||||
DESTINATION ${PACKAGE_INSTALL_DIR}/jsoncpp
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/jsoncpp
|
||||||
FILE jsoncppConfig.cmake)
|
FILE jsoncppConfig.cmake)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
FILE(GLOB INCLUDE_FILES "json/*.h")
|
FILE(GLOB INCLUDE_FILES "json/*.h")
|
||||||
INSTALL(FILES ${INCLUDE_FILES} DESTINATION ${INCLUDE_INSTALL_DIR}/json)
|
INSTALL(FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/json)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
prefix=@CMAKE_INSTALL_PREFIX@
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
exec_prefix=${prefix}
|
exec_prefix=${prefix}
|
||||||
libdir=${exec_prefix}/@LIBRARY_INSTALL_DIR@
|
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||||
includedir=${prefix}/@INCLUDE_INSTALL_DIR@
|
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||||
|
|
||||||
Name: jsoncpp
|
Name: jsoncpp
|
||||||
Description: A C++ library for interacting with JSON
|
Description: A C++ library for interacting with JSON
|
||||||
|
@ -1,41 +1,41 @@
|
|||||||
if( CMAKE_COMPILER_IS_GNUCXX )
|
IF( CMAKE_COMPILER_IS_GNUCXX )
|
||||||
#Get compiler version.
|
#Get compiler version.
|
||||||
execute_process( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
|
EXECUTE_PROCESS( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
|
||||||
OUTPUT_VARIABLE GNUCXX_VERSION )
|
OUTPUT_VARIABLE GNUCXX_VERSION )
|
||||||
|
|
||||||
#-Werror=* was introduced -after- GCC 4.1.2
|
#-Werror=* was introduced -after- GCC 4.1.2
|
||||||
if( GNUCXX_VERSION VERSION_GREATER 4.1.2 )
|
IF( GNUCXX_VERSION VERSION_GREATER 4.1.2 )
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=strict-aliasing")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=strict-aliasing")
|
||||||
endif()
|
ENDIF()
|
||||||
endif( CMAKE_COMPILER_IS_GNUCXX )
|
ENDIF( CMAKE_COMPILER_IS_GNUCXX )
|
||||||
|
|
||||||
include(CheckIncludeFileCXX)
|
INCLUDE(CheckIncludeFileCXX)
|
||||||
include(CheckTypeSize)
|
INCLUDE(CheckTypeSize)
|
||||||
include(CheckStructHasMember)
|
INCLUDE(CheckStructHasMember)
|
||||||
include(CheckCXXSymbolExists)
|
INCLUDE(CheckCXXSymbolExists)
|
||||||
|
|
||||||
check_include_file_cxx(clocale HAVE_CLOCALE)
|
check_include_file_cxx(clocale HAVE_CLOCALE)
|
||||||
check_cxx_symbol_exists(localeconv clocale HAVE_LOCALECONV)
|
check_cxx_symbol_exists(localeconv clocale HAVE_LOCALECONV)
|
||||||
|
|
||||||
if(CMAKE_VERSION VERSION_LESS 3.0.0)
|
IF(CMAKE_VERSION VERSION_LESS 3.0.0)
|
||||||
# The "LANGUAGE CXX" parameter is not supported in CMake versions below 3,
|
# The "LANGUAGE CXX" parameter is not supported in CMake versions below 3,
|
||||||
# so the C compiler and header has to be used.
|
# so the C compiler and header has to be used.
|
||||||
check_include_file(locale.h HAVE_LOCALE_H)
|
check_include_file(locale.h HAVE_LOCALE_H)
|
||||||
set(CMAKE_EXTRA_INCLUDE_FILES locale.h)
|
SET(CMAKE_EXTRA_INCLUDE_FILES locale.h)
|
||||||
check_type_size("struct lconv" LCONV_SIZE)
|
check_type_size("struct lconv" LCONV_SIZE)
|
||||||
unset(CMAKE_EXTRA_INCLUDE_FILES)
|
UNSET(CMAKE_EXTRA_INCLUDE_FILES)
|
||||||
check_struct_has_member("struct lconv" decimal_point locale.h HAVE_DECIMAL_POINT)
|
check_struct_has_member("struct lconv" decimal_point locale.h HAVE_DECIMAL_POINT)
|
||||||
else()
|
ELSE()
|
||||||
set(CMAKE_EXTRA_INCLUDE_FILES clocale)
|
SET(CMAKE_EXTRA_INCLUDE_FILES clocale)
|
||||||
check_type_size(lconv LCONV_SIZE LANGUAGE CXX)
|
check_type_size(lconv LCONV_SIZE LANGUAGE CXX)
|
||||||
unset(CMAKE_EXTRA_INCLUDE_FILES)
|
UNSET(CMAKE_EXTRA_INCLUDE_FILES)
|
||||||
check_struct_has_member(lconv decimal_point clocale HAVE_DECIMAL_POINT LANGUAGE CXX)
|
check_struct_has_member(lconv decimal_point clocale HAVE_DECIMAL_POINT LANGUAGE CXX)
|
||||||
endif()
|
ENDIF()
|
||||||
|
|
||||||
if(NOT (HAVE_CLOCALE AND HAVE_LCONV_SIZE AND HAVE_DECIMAL_POINT AND HAVE_LOCALECONV))
|
IF(NOT (HAVE_CLOCALE AND HAVE_LCONV_SIZE AND HAVE_DECIMAL_POINT AND HAVE_LOCALECONV))
|
||||||
message(WARNING "Locale functionality is not supported")
|
MESSAGE(WARNING "Locale functionality is not supported")
|
||||||
add_definitions(-DJSONCPP_NO_LOCALE_SUPPORT)
|
ADD_DEFINITIONS(-DJSONCPP_NO_LOCALE_SUPPORT)
|
||||||
endif()
|
ENDIF()
|
||||||
|
|
||||||
SET( JSONCPP_INCLUDE_DIR ../../include )
|
SET( JSONCPP_INCLUDE_DIR ../../include )
|
||||||
|
|
||||||
@ -80,13 +80,13 @@ IF(BUILD_SHARED_LIBS)
|
|||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
INSTALL( TARGETS jsoncpp_lib ${INSTALL_EXPORT}
|
INSTALL( TARGETS jsoncpp_lib ${INSTALL_EXPORT}
|
||||||
RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR})
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
IF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
|
IF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
|
||||||
TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib PUBLIC
|
TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib PUBLIC
|
||||||
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/${JSONCPP_INCLUDE_DIR}>)
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/${JSONCPP_INCLUDE_DIR}>)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
@ -99,15 +99,15 @@ IF(BUILD_STATIC_LIBS)
|
|||||||
DEBUG_OUTPUT_NAME jsoncpp${DEBUG_LIBNAME_SUFFIX} )
|
DEBUG_OUTPUT_NAME jsoncpp${DEBUG_LIBNAME_SUFFIX} )
|
||||||
|
|
||||||
INSTALL( TARGETS jsoncpp_lib_static ${INSTALL_EXPORT}
|
INSTALL( TARGETS jsoncpp_lib_static ${INSTALL_EXPORT}
|
||||||
RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR})
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
|
||||||
IF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
|
IF(NOT CMAKE_VERSION VERSION_LESS 2.8.11)
|
||||||
TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib_static PUBLIC
|
TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib_static PUBLIC
|
||||||
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/${JSONCPP_INCLUDE_DIR}>
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/${JSONCPP_INCLUDE_DIR}>
|
||||||
)
|
)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user