modernized and cleaned up CMake files / explicitly check for CMake 3.13 with Visual Studio (#5825)
This commit is contained in:
parent
fc1d4d6f7d
commit
93a53af168
|
@ -1,14 +1,18 @@
|
||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
project(Cppcheck)
|
if (MSVC)
|
||||||
|
cmake_minimum_required(VERSION 3.13)
|
||||||
|
endif()
|
||||||
|
cmake_policy(SET CMP0048 NEW) # allow VERSION in project()
|
||||||
|
project(Cppcheck VERSION 2.13.99 LANGUAGES CXX)
|
||||||
|
|
||||||
include(cmake/cxx11.cmake)
|
include(cmake/cxx11.cmake)
|
||||||
use_cxx11()
|
use_cxx11()
|
||||||
|
set (CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
|
||||||
include(cmake/ccache.cmake)
|
|
||||||
include(cmake/compilerCheck.cmake)
|
include(cmake/compilerCheck.cmake)
|
||||||
include(cmake/versions.cmake)
|
include(cmake/versions.cmake)
|
||||||
include(cmake/options.cmake)
|
include(cmake/options.cmake)
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
if (CMAKE_VERSION VERSION_LESS "3.0")
|
|
||||||
if (CMAKE_CXX_COMPILER_LAUNCHER)
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_CXX_COMPILER_LAUNCHER}")
|
|
||||||
elseif (CMAKE_C_COMPILER_LAUNCHER)
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CMAKE_C_COMPILER_LAUNCHER}")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
|
@ -1,4 +1,6 @@
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
|
# add_compile_definitions() requires CMake 3.12
|
||||||
|
|
||||||
# Visual Studio only sets _DEBUG
|
# Visual Studio only sets _DEBUG
|
||||||
add_compile_definitions($<$<CONFIG:Debug>:DEBUG>)
|
add_compile_definitions($<$<CONFIG:Debug>:DEBUG>)
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
|
|
||||||
if (USE_LIBCXX)
|
if (USE_LIBCXX)
|
||||||
add_compile_options(-stdlib=libc++)
|
add_compile_options(-stdlib=libc++)
|
||||||
add_link_options(-lc++)
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lc++")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# TODO: fix and enable these warnings - or move to suppression list below
|
# TODO: fix and enable these warnings - or move to suppression list below
|
||||||
|
@ -133,6 +133,8 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
|
# add_link_options() requires CMake 3.13
|
||||||
|
|
||||||
# General
|
# General
|
||||||
add_compile_options(/W4) # Warning Level
|
add_compile_options(/W4) # Warning Level
|
||||||
add_compile_options(/Zi) # Debug Information Format - Program Database
|
add_compile_options(/Zi) # Debug Information Format - Program Database
|
||||||
|
|
|
@ -1,20 +1,9 @@
|
||||||
macro(use_cxx11)
|
macro(use_cxx11)
|
||||||
if (CMAKE_VERSION VERSION_LESS "3.1")
|
# some GitHub Action Windows runners randomly fail with a complaint that Qt6 requires a C++17 compiler
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
if (MSVC AND USE_QT6)
|
||||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
|
# CMAKE_CXX_STANDARD 17 was added in CMake 3.8
|
||||||
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
set (CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to use")
|
||||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
|
||||||
endif ()
|
|
||||||
else ()
|
else ()
|
||||||
# some GitHub Action windows runners randomly fail with a complaint that Qt6 requires a C++17 compiler
|
set (CMAKE_CXX_STANDARD 11 CACHE STRING "C++ standard to use")
|
||||||
if (MSVC)
|
endif()
|
||||||
set (CMAKE_CXX_STANDARD 17 CACHE STRING "C++ standard to use")
|
|
||||||
else ()
|
|
||||||
set (CMAKE_CXX_STANDARD 11 CACHE STRING "C++ standard to use")
|
|
||||||
endif()
|
|
||||||
set (CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
||||||
if (POLICY CMP0025)
|
|
||||||
cmake_policy(SET CMP0025 NEW)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endmacro(use_cxx11)
|
endmacro(use_cxx11)
|
||||||
|
|
|
@ -72,6 +72,10 @@ else()
|
||||||
set(CMAKE_DISABLE_PRECOMPILE_HEADERS On CACHE BOOL "Disable precompiled headers")
|
set(CMAKE_DISABLE_PRECOMPILE_HEADERS On CACHE BOOL "Disable precompiled headers")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (BUILD_TESTS AND REGISTER_TESTS AND CMAKE_VERSION VERSION_LESS "3.9")
|
||||||
|
message(FATAL_ERROR "Registering tests with CTest requires at least CMake 3.9. Use REGISTER_TESTS=OFF to disable this.")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE ${CMAKE_INSTALL_PREFIX}/include CACHE PATH "Output directory for headers")
|
set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE ${CMAKE_INSTALL_PREFIX}/include CACHE PATH "Output directory for headers")
|
||||||
set(CMAKE_LIB_DIRS_CONFIGCMAKE ${CMAKE_INSTALL_PREFIX}/lib CACHE PATH "Output directory for libraries")
|
set(CMAKE_LIB_DIRS_CONFIGCMAKE ${CMAKE_INSTALL_PREFIX}/lib CACHE PATH "Output directory for libraries")
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
message( STATUS "------------------ General configuration for ${PROJECT_NAME} ${VERSION} -----------------")
|
message( STATUS "------------------ General configuration for ${PROJECT_NAME} ${PROJECT_VERSION} -----------------")
|
||||||
message( STATUS )
|
message( STATUS )
|
||||||
message( STATUS "CMake Version = ${CMAKE_VERSION}")
|
message( STATUS "CMake Version = ${CMAKE_VERSION}")
|
||||||
message( STATUS "CMake Generator = ${CMAKE_GENERATOR}")
|
message( STATUS "CMake Generator = ${CMAKE_GENERATOR}")
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
# Version for libraries CPP
|
# Version for libraries CPP
|
||||||
# Version string must have 3 "parts". https://sourceforge.net/p/cppcheck/discussion/development/thread/e57efb2b62/
|
# Version string must have 3 "parts". https://sourceforge.net/p/cppcheck/discussion/development/thread/e57efb2b62/
|
||||||
SET(VERSION "2.13.99")
|
SET(SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
|
||||||
STRING(REGEX MATCHALL "[0-9]+" VERSION_PARTS "${VERSION}")
|
|
||||||
LIST(GET VERSION_PARTS 0 VERSION_MAJOR)
|
|
||||||
LIST(GET VERSION_PARTS 1 VERSION_MINOR)
|
|
||||||
LIST(GET VERSION_PARTS 2 VERSION_PATCH)
|
|
||||||
SET(SOVERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
|
|
||||||
|
|
||||||
# Postfix of so's:
|
# Postfix of so's:
|
||||||
SET(DLLVERSION "")
|
SET(DLLVERSION "")
|
||||||
|
|
|
@ -19,3 +19,4 @@ Other:
|
||||||
- Added CMake option 'EXTERNALS_AS_SYSTEM' to treat external includes as 'SYSTEM' ones.
|
- Added CMake option 'EXTERNALS_AS_SYSTEM' to treat external includes as 'SYSTEM' ones.
|
||||||
- The minimum required compiler versions have been bumped to GCC 5.1 / Clang 3.5 / Visual Studio 2015
|
- The minimum required compiler versions have been bumped to GCC 5.1 / Clang 3.5 / Visual Studio 2015
|
||||||
- The minimum required CMake version has been bumped to 3.5
|
- The minimum required CMake version has been bumped to 3.5
|
||||||
|
- Using Visual Studio with CMake now checks if the CMake version is at least 3.13. This was always required but was not checked explicitly.
|
||||||
|
|
|
@ -60,12 +60,7 @@ if (BUILD_TESTS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (REGISTER_TESTS)
|
if (REGISTER_TESTS)
|
||||||
# CMP0057 requires 3.3 - if (IN_LIST)
|
# CMAKE_MATCH_<n> usage for if (MATCHES) requires CMake 3.9
|
||||||
# CMP0064 requires 3.4 - if (TEST)
|
|
||||||
# CMAKE_MATCH_<n> usage for if (MATCHES) requires 3.9
|
|
||||||
cmake_minimum_required(VERSION 3.9)
|
|
||||||
cmake_policy(SET CMP0064 NEW)
|
|
||||||
cmake_policy(SET CMP0057 NEW)
|
|
||||||
|
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
include(ProcessorCount)
|
include(ProcessorCount)
|
||||||
|
|
Loading…
Reference in New Issue