mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2025-03-02 20:30:10 +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
|
||||
|
||||
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
|
||||
if(NOT DEFINED CMAKE_BUILD_TYPE)
|
||||
@ -73,12 +127,6 @@ if(MSVC)
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 ")
|
||||
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")
|
||||
# using regular Clang or AppleClang
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Werror=conversion -Werror=sign-compare")
|
||||
|
Loading…
x
Reference in New Issue
Block a user