mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2025-03-03 04:38:39 +01:00
ENH: Provide range for non-warned cmake versions
Allow configuring without cmake policy developer warnings for a range of cmake versions. This prevents the need to explicitly enumerate every new policy for each new cmake version. === Moved setting of the CMAKE_CXX_STANDARD to before the project() directive.
This commit is contained in:
parent
892a386018
commit
b3b92df879
@ -1,6 +1,60 @@
|
|||||||
# vim: et ts=4 sts=4 sw=4 tw=0
|
# vim: et ts=4 sts=4 sw=4 tw=0
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1)
|
# ==== Define cmake build policies that affect compilation and linkage default behaviors
|
||||||
|
#
|
||||||
|
# Set the JSONCPP_NEWEST_VALIDATED_POLICIES_VERSION string to the newest cmake version
|
||||||
|
# policies that provide successful builds. By setting JSONCPP_NEWEST_VALIDATED_POLICIES_VERSION
|
||||||
|
# to a value greater than the oldest policies, all policies between
|
||||||
|
# JSONCPP_OLDEST_VALIDATED_POLICIES_VERSION and CMAKE_VERSION (used for this build)
|
||||||
|
# are set to their NEW behaivor, thereby suppressing policy warnings related to policies
|
||||||
|
# between the JSONCPP_OLDEST_VALIDATED_POLICIES_VERSION and CMAKE_VERSION.
|
||||||
|
#
|
||||||
|
# CMake versions greater than the JSONCPP_NEWEST_VALIDATED_POLICIES_VERSION policies will
|
||||||
|
# continue to generate policy warnings "CMake Warning (dev)...Policy CMP0XXX is not set:"
|
||||||
|
#
|
||||||
|
set(JSONCPP_OLDEST_VALIDATED_POLICIES_VERSION "3.1.0")
|
||||||
|
set(JSONCPP_NEWEST_VALIDATED_POLICIES_VERSION "3.13.1")
|
||||||
|
cmake_minimum_required(VERSION ${JSONCPP_OLDEST_VALIDATED_POLICIES_VERSION} FATAL_ERROR)
|
||||||
|
if("${CMAKE_VERSION}" VERSION_LESS_EQUAL "${JSONCPP_NEWEST_VALIDATED_POLICIES_VERSION}")
|
||||||
|
#Set and use the newest available cmake policies that are validated to work
|
||||||
|
set(JSONCPP_CMAKE_POLICY_VERSION "${CMAKE_VERSION}")
|
||||||
|
else()
|
||||||
|
set(JSONCPP_CMAKE_POLICY_VERSION "${JSONCPP_NEWEST_VALIDATED_POLICIES_VERSION}")
|
||||||
|
endif()
|
||||||
|
cmake_policy(VERSION ${JSONCPP_CMAKE_POLICY_VERSION})
|
||||||
|
#
|
||||||
|
# Now enumerate specific policies newer than JSONCPP_NEWEST_VALIDATED_POLICIES_VERSION
|
||||||
|
# that may need to be individually set to NEW/OLD
|
||||||
|
#
|
||||||
|
foreach(pnew "") # Currently Empty
|
||||||
|
if(POLICY ${pnew})
|
||||||
|
cmake_policy(SET ${pnew} NEW)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
foreach(pold "") # Currently Empty
|
||||||
|
if(POLICY ${pold})
|
||||||
|
cmake_policy(SET ${pold} OLD)
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
# ==== Define language standard configurations requiring at least c++11 standard
|
||||||
|
if(CMAKE_CXX_STANDARD EQUAL "98" )
|
||||||
|
message(FATAL_ERROR "CMAKE_CXX_STANDARD:STRING=98 is not supported.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
#####
|
||||||
|
## Set the default target properties
|
||||||
|
if(NOT CMAKE_CXX_STANDARD)
|
||||||
|
set(CMAKE_CXX_STANDARD 11) # Supported values are ``11``, ``14``, and ``17``.
|
||||||
|
endif()
|
||||||
|
if(NOT CMAKE_CXX_STANDARD_REQUIRED)
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
endif()
|
||||||
|
if(NOT CMAKE_CXX_EXTENSIONS)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ====
|
||||||
|
|
||||||
# Ensures that CMAKE_BUILD_TYPE has a default value
|
# Ensures that CMAKE_BUILD_TYPE has a default value
|
||||||
if(NOT DEFINED CMAKE_BUILD_TYPE)
|
if(NOT DEFINED CMAKE_BUILD_TYPE)
|
||||||
@ -73,12 +127,6 @@ if(MSVC)
|
|||||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 ")
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 ")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Require C++11 support, prefer ISO C++ over GNU variants,
|
|
||||||
# as relying solely on ISO C++ is more portable.
|
|
||||||
set(CMAKE_CXX_STANDARD 11)
|
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
||||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
||||||
|
|
||||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
# using regular Clang or AppleClang
|
# using regular Clang or AppleClang
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Werror=conversion -Werror=sign-compare")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Werror=conversion -Werror=sign-compare")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user