mirror of
https://github.com/yhirose/cpp-peglib.git
synced 2024-12-22 11:55:30 +00:00
Enhance CMake files to set warning level high(er) and set C++14 flags
This commit is contained in:
parent
d0c6cd55ad
commit
c3c6037241
@ -1,6 +1,62 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
add_definitions("-std=c++1y")
|
add_definitions("-std=c++1y")
|
||||||
|
|
||||||
|
# Check if a supported compiler is used and add c++14 flag:
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
|
||||||
|
message(FATAL_ERROR "Need at least gcc 4.9 to compile.")
|
||||||
|
endif()
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||||
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19)
|
||||||
|
message(FATAL_ERROR "Visual Studio 2015 or newer is required.")
|
||||||
|
endif()
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
|
||||||
|
message(FATAL_ERROR "Clang below version 3.4 will most likely not work. Please upgrade your compiler.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.6)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y")
|
||||||
|
else()
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
|
||||||
|
endif()
|
||||||
|
else() # no GNU, no MSVC, no Clang
|
||||||
|
message(WARNING "You are using an unsupported compiler. Compilation has only been tested with MSVC, GCC and Clang.")
|
||||||
|
|
||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
check_cxx_compiler_flag(-std=c++14 HAS_CXX14_FLAG)
|
||||||
|
if(HAS_CXX14_FLAG)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Your compiler doesn't support the '-std=c++14' flag.")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
|
||||||
|
OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||||
|
set(warning_options -Weverything
|
||||||
|
-Wno-c++98-compat
|
||||||
|
-Wno-padded
|
||||||
|
-Wno-c++98-compat-pedantic
|
||||||
|
-Wno-exit-time-destructors
|
||||||
|
-Wno-missing-prototypes
|
||||||
|
-Wno-weak-vtables
|
||||||
|
-Wno-global-constructors
|
||||||
|
-Wno-format-nonliteral
|
||||||
|
-Wno-switch-enum
|
||||||
|
-Wno-missing-noreturn
|
||||||
|
-Wno-covered-switch-default
|
||||||
|
)
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
|
set(warning_options -Wall -Wpedantic -Wextra)
|
||||||
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||||
|
set(warning_options /WX /W4 /wd4503 /wd4512)
|
||||||
|
endif()
|
||||||
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
|
|
||||||
add_subdirectory(lint)
|
add_subdirectory(lint)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
include_directories(..)
|
include_directories(..)
|
||||||
add_definitions("-std=c++1y")
|
add_compile_options(${cxx11_options} ${warning_options})
|
||||||
|
|
||||||
add_executable(calc calc.cc)
|
add_executable(calc calc.cc)
|
||||||
target_link_libraries(calc pthread)
|
target_link_libraries(calc pthread)
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
include_directories(../..)
|
include_directories(../..)
|
||||||
add_definitions("-std=c++1y")
|
|
||||||
|
|
||||||
add_executable(culebra main.cc)
|
add_executable(culebra main.cc)
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
include_directories(../..)
|
include_directories(../..)
|
||||||
add_definitions("-std=c++1y")
|
|
||||||
|
|
||||||
add_executable(pl0 pl0.cc)
|
add_executable(pl0 pl0.cc)
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
include_directories(..)
|
include_directories(..)
|
||||||
add_definitions("-std=c++1y")
|
|
||||||
|
|
||||||
add_executable(peglint peglint.cc server.cc)
|
add_executable(peglint peglint.cc server.cc)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
include_directories(..)
|
include_directories(..)
|
||||||
add_definitions("-std=c++1y")
|
add_compile_options(${cxx11_options} ${warning_options})
|
||||||
|
|
||||||
add_executable(test-main test.cc)
|
add_executable(test-main test.cc)
|
||||||
target_link_libraries(test-main pthread)
|
target_link_libraries(test-main pthread)
|
||||||
|
Loading…
Reference in New Issue
Block a user