ref: f9ddf46b12b9ee88e3b81f35f80e374722ca6f9d
dir: /parg/CMakeLists.txt/
cmake_minimum_required(VERSION 2.8.6)
project(parg C)
include(CheckCCompilerFlag)
include(CTest)
option(BUILD_COVERAGE "Code coverage" OFF)
message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}")
function(_add_c_compiler_flags var)
foreach(flag ${ARGN})
string(REGEX REPLACE "[^a-zA-Z0-9]+" "_" flag_var "CFLAG_${flag}")
check_c_compiler_flag("${flag}" ${flag_var})
if(${flag_var})
set(${var} "${${var}} ${flag}")
endif()
endforeach()
set(${var} "${${var}}" PARENT_SCOPE)
endfunction()
if(MSVC)
_add_c_compiler_flags(CMAKE_C_FLAGS "/analyze")
add_definitions(/D_CRT_SECURE_NO_WARNINGS)
elseif(CMAKE_COMPILER_IS_GNUCC)
_add_c_compiler_flags(CMAKE_C_FLAGS
-Wall
-Wextra
-pedantic
-Wshadow
-Wpointer-arith
-Wcast-qual
-Wcast-align
-Wstrict-prototypes
-Wmissing-prototypes
)
elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
_add_c_compiler_flags(CMAKE_C_FLAGS "-Weverything;-pedantic")
endif()
if(BUILD_COVERAGE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 --coverage")
endif()
include_directories(${PROJECT_SOURCE_DIR})
add_library(parg parg.c parg.h)
if(BUILD_TESTING)
add_executable(test_parg test/test_parg.c test/greatest.h parg.h)
target_link_libraries(test_parg parg)
enable_testing()
add_test(test_parg test_parg)
endif()