Compare commits

...

17 Commits

Author SHA1 Message Date
0e96514413 Исправление связки cotire + clang 2020-10-15 06:55:02 +03:00
39111c890a Тест 2020-10-02 11:38:14 +03:00
67cbb07e51 Установка флагов в зависимости от типа цели 2020-10-02 11:31:18 +03:00
eeae991b4c Проба 2020-10-02 11:20:30 +03:00
e3957adb47 Проба 2020-10-02 10:58:45 +03:00
41e27fb251 Merge branch 'master' of git.246060.ru:f1x1t/cmlib 2020-10-02 08:37:54 +03:00
2be896c4a8 Глобальные настройки PVS-Studio 2020-10-02 08:37:25 +03:00
e3600e96ce Передача аргументов во внешние проекты (переменная CMLIB_EXT_PROJ_DEFAULT_ARGS) 2020-08-03 15:16:10 +03:00
5c90828e4e Убрана явное указания языка для файла исходных текстов 2020-07-23 10:21:40 +03:00
186d67c4bb Добавление флагов в виде строк 2020-06-26 04:09:40 +03:00
2e18f5981b Правка добавления флагов 2020-06-26 04:04:38 +03:00
ef788f6cc5 Другой способ установки флагов 2020-06-25 12:22:35 +03:00
954b27fa27 Рефакторинг 2020-06-25 11:30:48 +03:00
a8e546734a Лишние пробелы 2020-06-25 09:21:18 +03:00
f2ee747a38 По возможности использовать C++14, иначе С++11 2020-06-25 09:20:23 +03:00
a6bb734f49 Правка для ОС Эльбрус 2020-05-18 19:33:26 +03:00
23be253a8d Переписана работа с флагами по умолчанию 2020-04-27 19:30:41 +03:00
13 changed files with 177 additions and 89 deletions

View File

@@ -21,32 +21,24 @@ else()
endif()
endif()
set(_gcc_debug_flags "-ggdb -fno-omit-frame-pointer")
set(_gcc_profile_flags "-pg")
if(CMAKE_BUILD_TYPE STREQUAL Profile)
# Ключи компиляции для режима профилирования в зависимости от типа компилятора
if(CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
set(CMAKE_C_FLAGS_PROFILE ${CMAKE_C_FLAGS_RELEASE} -ggdb -pg -fno-omit-frame-pointer)
list(REMOVE_DUPLICATES CMAKE_C_FLAGS_PROFILE)
set(CMAKE_C_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_PROFILE ${CMAKE_CXX_FLAGS_RELEASE} -ggdb -pg -fno-omit-frame-pointer)
list(REMOVE_DUPLICATES CMAKE_CXX_FLAGS_PROFILE)
set(CMAKE_CXX_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS_PROFILE ${CMAKE_EXE_LINKER_FLAGS_RELEASE} -pg)
list(REMOVE_DUPLICATES CMAKE_EXE_LINKER_FLAGS_PROFILE)
set(CMAKE_EXE_LINKER_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE ${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -pg)
list(REMOVE_DUPLICATES CMAKE_SHARED_LINKER_FLAGS_PROFILE)
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_STATIC_LINKER_FLAGS_PROFILE ${CMAKE_STATIC_LINKER_FLAGS_RELEASE} -pg)
list(REMOVE_DUPLICATES CMAKE_STATIC_LINKER_FLAGS_PROFILE)
set(CMAKE_STATIC_LINKER_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE ${CMAKE_MODULE_LINKER_FLAGS_RELEASE} -pg)
list(REMOVE_DUPLICATES CMAKE_MODULE_LINKER_FLAGS_PROFILE)
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE CACHE STRING "" FORCE)
set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE} ${_gcc_debug_flags} ${_gcc_profile_flags}"
CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} ${_gcc_debug_flags} ${_gcc_profile_flags}"
CACHE STRING "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${_gcc_profile_flags}"
CACHE STRING "" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} ${_gcc_profile_flags}"
CACHE STRING "" FORCE)
set(CMAKE_STATIC_LINKER_FLAGS_PROFILE "${CMAKE_STATIC_LINKER_FLAGS_RELEASE} ${_gcc_profile_flags}"
CACHE STRING "" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS_PROFILE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} ${_gcc_profile_flags}"
CACHE STRING "" FORCE)
elseif(CMAKE_CXX_COMPILER_IS_Intel)
message("Set options for profiling with Intel C++")
elseif(CMAKE_CXX_COMPILER_IS_MSVC)
@@ -58,13 +50,11 @@ if(CMAKE_BUILD_TYPE STREQUAL Profile)
elseif(CMAKE_BUILD_TYPE STREQUAL Debug)
# В режиме отладки подробный вывод сообщений компилятора
if(CMAKE_CXX_COMPILER_IS_Clang OR CMAKE_CXX_COMPILER_IS_GCC)
set(CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} -ggdb -fno-omit-frame-pointer)
list(REMOVE_DUPLICATES CMAKE_C_FLAGS_DEBUG)
set(CMAKE_C_FLAGS_DEBUG CACHE STRING "" FORCE)
string(REPLACE " ${_gcc_debug_flags}" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${_gcc_debug_flags}" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} -ggdb -fno-omit-frame-pointer)
list(REMOVE_DUPLICATES CMAKE_CXX_FLAGS_DEBUG)
set(CMAKE_CXX_FLAGS_DEBUG CACHE STRING "" FORCE)
string(REPLACE " ${_gcc_debug_flags}" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${_gcc_debug_flags}" CACHE STRING "" FORCE)
endif()
set(CMAKE_VERBOSE_MAKEFILE ON CACHE BOOL "Enable generation of verbose build scripts." FORCE)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable generation of compile_commands.json." FORCE)
@@ -77,3 +67,6 @@ elseif(CMAKE_BUILD_TYPE STREQUAL None)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Enable generation of compile_commands.json." FORCE)
set(ANALYSIS 1)
endif()
unset(_gcc_debug_flags)
unset(_gcc_profile_flags)

View File

@@ -15,6 +15,18 @@ function(add_pvs_check target)
ARGS --analysis-mode 29 --exclude-path ${CMAKE_CURRENT_BINARY_DIR}/${target}_autogen
MODE GA:1,2,3;64:1;OP:1,2;CS:1,2)
add_dependencies(pvs-check pvs-check-${target})
configure_file("${CMLIB_MODULE_DIR}/hpp/pvs_studio.hpp.in" "${CMAKE_BINARY_DIR}/include/pvs_studio.hpp")
get_target_property(target_type ${target} TYPE)
if (${target_type} STREQUAL "INTERFACE_LIBRARY")
set(target_type INTERFACE)
else()
set(target_type PRIVATE)
endif()
if(MSVC)
target_compile_options(${target} BEFORE ${target_type} /FI "${CMAKE_BINARY_DIR}/include/pvs_studio.hpp")
else() # GCC/Clang
target_compile_options(${target} BEFORE ${target_type} -include "${CMAKE_BINARY_DIR}/include/pvs_studio.hpp")
endif()
else()
message(STATUS "CMLIB warning:")
message(STATUS " PVS-Studio analyzer is not found")

View File

@@ -7,9 +7,7 @@ function(add_code_coverage target)
if(CMLIB_ENABLE_CODE_COVERAGE)
if(CMAKE_CXX_COMPILER_IS_GCC)
target_compile_options(${target} PUBLIC "--coverage")
get_target_property(LF ${target} LINK_FLAGS)
string(APPEND LF " --coverage")
set_target_properties(${target} PROPERTIES LINK_FLAGS ${LF})
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " --coverage")
if(LCOV_EXE)
add_custom_target(

View File

@@ -49,5 +49,6 @@ include(CMLibToday)
include(CMLibAuxilarySymlinks)
include(CMLibConfigHPPGenerate)
include(CMLibNinjaGeneratorHelper)
include(CMLibExternalProject)
include(CMLibCPack)
include(CMLibUninstall)

View File

@@ -1,9 +1,10 @@
set(COMMON_CXX_FEATURES cxx_alias_templates cxx_nullptr cxx_override)
function(common_target_properties target)
get_target_property(__type ${target} TYPE)
get_target_property(_targetType ${target} TYPE)
set(__visibility PUBLIC)
if(__type STREQUAL INTERFACE_LIBRARY)
if(_targetType STREQUAL INTERFACE_LIBRARY)
set(__interface 1)
set(__visibility INTERFACE)
endif()
@@ -17,7 +18,6 @@ function(common_target_properties target)
endforeach()
target_compile_features(${target} ${__visibility} ${COMMON_CXX_FEATURES})
get_target_property(_targetType ${target} TYPE)
if(_targetType STREQUAL "EXECUTABLE")
set_target_properties(${target} PROPERTIES RUNTIME_OUTPUT_DIRECTORY
${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
@@ -25,13 +25,16 @@ function(common_target_properties target)
target_compile_options(${target} PUBLIC "${CMAKE_CXX_COMPILE_OPTIONS_PIE}")
endif()
endif()
target_include_directories(
${target}
PUBLIC $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}> $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>)
if(APPLE)
target_compile_definitions(${target} ${__visibility} Darwin)
endif()
if(NOT __interface)
if(TARGET Qt5::Core)
if(_targetType STREQUAL "EXECUTABLE")
@@ -48,43 +51,27 @@ function(common_target_properties target)
endif()
endif()
if(CMAKE_CXX_COMPILER_IS_GCC AND NOT APPLE)
set_target_properties(${target} PROPERTIES LINK_FLAGS "-Wl,--no-as-needed")
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,--no-as-needed")
endif()
endif()
# LTO only for executables (not libraries) in Release build type
get_target_property(target_type ${target} TYPE)
if(target_type STREQUAL "EXECUTABLE" AND CMAKE_BUILD_TYPE STREQUAL "Release")
if(_targetType STREQUAL "EXECUTABLE" AND CMAKE_BUILD_TYPE STREQUAL "Release")
check_cxx_compiler_flag(-flto CXX_HAS_LTO_FLAG)
check_cxx_compiler_flag(-fno-fat-lto-objects CXX_HAS_NO_FAT_LTO_FLAG)
if(CMAKE_CXX_COMPILER_IS_GCC AND CXX_HAS_LTO_FLAG)
find_program(CMAKE_GCC_AR NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_TOOLCHAIN_SUFFIX}"
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
find_program(CMAKE_GCC_NM NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm${_CMAKE_TOOLCHAIN_SUFFIX}"
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
find_program(
CMAKE_GCC_RANLIB NAMES "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib${_CMAKE_TOOLCHAIN_SUFFIX}"
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
if(CMAKE_GCC_AR AND CMAKE_GCC_NM AND CMAKE_GCC_RANLIB)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -flto")
if(CXX_HAS_NO_FAT_LTO_FLAG)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fno-fat-lto-objects")
endif()
set(CMAKE_AR "${CMAKE_GCC_AR}")
set(CMAKE_NM "${CMAKE_GCC_NM}")
set(CMAKE_RANLIB "${CMAKE_GCC_RANLIB}")
else()
message(WARNING "GCC indicates LTO support, but binutils wrappers could not be found. Disabling LTO.")
if(CXX_HAS_LTO_FLAG)
target_compile_options(${target} PUBLIC "-flto")
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -flto")
if(CXX_HAS_NO_FAT_LTO_FLAG)
target_compile_options(${target} PUBLIC "-fno-fat-lto-objects")
set_property(TARGET ${target} APPEND_STRING PROPERTY LINK_FLAGS " -fno-fat-lto-objects")
endif()
else()
check_enable_compiler_flag(-flto)
check_enable_compiler_flag(-fno-fat-lto-objects)
endif()
endif()
set_target_properties(${target} PROPERTIES COTIRE_ENABLE_PRECOMPILED_HEADER
${CMLIB_COTIRE_ENABLE_PRECOMPILED_HEADER})
set_target_properties(${target} PROPERTIES COTIRE_ADD_UNITY_BUILD ${CMLIB_COTIRE_ADD_UNITY_BUILD})
set_property(TARGET ${target} PROPERTY COTIRE_ENABLE_PRECOMPILED_HEADER
${CMLIB_COTIRE_ENABLE_PRECOMPILED_HEADER})
set_property(TARGET ${target} PROPERTY COTIRE_ADD_UNITY_BUILD ${CMLIB_COTIRE_ADD_UNITY_BUILD})
if(CMAKE_BUILD_TYPE STREQUAL Profile)
target_compile_definitions(${target} ${__visibility} PROFILE)

View File

@@ -19,3 +19,28 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_CXX_COMPILER_IS_MSVC ON)
endif()
# Предпочтительные пути к утилитам для компоновки
if(CMAKE_CXX_COMPILER_IS_GCC)
find_program(
CMAKE_GCC_AR NAMES "/usr/e2k-linux/bin/ar" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar${_CMAKE_TOOLCHAIN_SUFFIX}"
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ar" "ar" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
if(CMAKE_GCC_AR)
set(CMAKE_AR ${CMAKE_GCC_AR} CACHE STRING "" FORCE)
endif()
find_program(
CMAKE_GCC_NM NAMES "/usr/e2k-linux/bin/nm" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm${_CMAKE_TOOLCHAIN_SUFFIX}"
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-nm" "nm" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
if(CMAKE_GCC_NM)
set(CMAKE_NM ${CMAKE_GCC_NM} CACHE STRING "" FORCE)
endif()
find_program(
CMAKE_GCC_RANLIB
NAMES "/usr/e2k-linux/bin/ranlib" "${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib${_CMAKE_TOOLCHAIN_SUFFIX}"
"${_CMAKE_TOOLCHAIN_PREFIX}gcc-ranlib" "ranlib" HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
if(CMAKE_GCC_RANLIB)
set(CMAKE_RANLIB ${CMAKE_GCC_RANLIB} CACHE STRING "" FORCE)
endif()
endif()

View File

@@ -1,23 +1,25 @@
include(WriteCompilerDetectionHeader)
if(${CMAKE_VERSION} VERSION_GREATER "3.6.0")
include(WriteCompilerDetectionHeader)
set(OUTPUT_FILE ${CMAKE_BINARY_DIR}/include/compiler_features.hpp)
if(CMLIB_GENERATED_HEADERS_PATH)
set(OUTPUT_FILE ${CMLIB_GENERATED_HEADERS_PATH}/compiler_features.hpp)
set(OUTPUT_FILE ${CMAKE_BINARY_DIR}/include/compiler_features.hpp)
if(CMLIB_GENERATED_HEADERS_PATH)
set(OUTPUT_FILE ${CMLIB_GENERATED_HEADERS_PATH}/compiler_features.hpp)
endif()
write_compiler_detection_header(
FILE ${OUTPUT_FILE}
PREFIX ${CMLIB_PROJECT_NAME_CANONICAL}
COMPILERS GNU Clang MSVC Intel
FEATURES
cxx_nullptr
cxx_override
cxx_alignas
cxx_alignof
cxx_attributes
cxx_auto_type
cxx_constexpr
cxx_digit_separators
cxx_range_for)
unset(OUTPUT_FILE)
endif()
write_compiler_detection_header(
FILE ${OUTPUT_FILE}
PREFIX ${CMLIB_PROJECT_NAME_CANONICAL}
COMPILERS GNU Clang MSVC Intel
FEATURES
cxx_nullptr
cxx_override
cxx_alignas
cxx_alignof
cxx_attributes
cxx_auto_type
cxx_constexpr
cxx_digit_separators
cxx_range_for)
unset(OUTPUT_FILE)

View File

@@ -31,12 +31,23 @@ else()
endif()
endif()
# Выбор стандарта по умолчанию (можно переопределить в проекте)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
check_cxx_compiler_flag(-std=c++14 HAVE_FLAG_STD_CXX14)
if(HAVE_FLAG_STD_CXX14)
set(CMAKE_CXX_STANDARD 14)
check_cxx_compiler_flag(-std=gnu++14 HAVE_FLAG_STD_GNUXX14)
if(HAVE_FLAG_STD_GNUXX14)
set(CMAKE_CXX_EXTENSIONS YES)
endif()
else()
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS YES)
endif()
# Common configuration for GCC, clang and Intel.
if(CMAKE_CXX_COMPILER_IS_CLANG OR CMAKE_CXX_COMPILER_IS_INTEL OR CMAKE_CXX_COMPILER_IS_GCC)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS YES)
if(CMLIB_WARNING_FLAGS AND CMAKE_BUILD_TYPE STREQUAL "Debug")
check_enable_cxx_flag(-Wall)
check_enable_cxx_flag(-Wextra)

View File

@@ -1,7 +1,7 @@
# По умолчанию отключена отладочная печать
# (если не включена явно программистом)
option(CMLIB_DEBUG_OUTPUT "Enable debug output" OFF)
option(CMLIB_INFO_OUTPUT "Enable info output" OFF)
option(CMLIB_INFO_OUTPUT "Enable info output" OFF)
option(CMLIB_WARNING_OUTPUT "Enable warning output" OFF)
# Если сборка производится в режиме для отладки,

View File

@@ -0,0 +1,46 @@
include(ExternalProject)
if(CMAKE_BUILD_TYPE)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
endif()
if(CMAKE_C_COMPILER)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER})
endif()
if(CMAKE_C_FLAGS)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -E env "CFLAGS=${CMAKE_C_FLAGS}")
endif()
if(CMAKE_CPP_COMPILER)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_CPP_COMPILER=${CMAKE_CPP_COMPILER})
endif()
if(CMAKE_CXX_FLAGS)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -E env "CXXFLAGS=${CMAKE_CXX_FLAGS}")
endif()
if(CMAKE_Fortran_COMPILER)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER})
endif()
if(CMAKE_Fortran_FLAGS)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -E env "FFLAGS=${CMAKE_Fortran_FLAGS}")
endif()
if(CMAKE_INSTALL_PREFIX)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR})
endif()
if(CMAKE_PREFIX_PATH)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH})
endif()
if(Qt5_DIR)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DQt5_DIR=${Qt5_DIR})
endif()
if(Qt5Core_DIR)
list(APPEND CMLIB_EXT_PROJ_DEFAULT_ARGS -DQt5Core_DIR=${Qt5Core_DIR})
endif()

View File

@@ -10,7 +10,7 @@ function(add_format_sources target)
find_program(UNCRUSTIFY_EXE NAMES uncrustify)
if(UNCRUSTIFY_EXE)
list(APPEND UNCRUSTIFY_OPTS -lCPP --replace --no-backup)
list(APPEND UNCRUSTIFY_OPTS --replace --no-backup)
if(EXISTS ${CMAKE_SOURCE_DIR}/cmake/etc/uncrustify/default.cfg)
list(APPEND UNCRUSTIFY_OPTS -c ${CMAKE_SOURCE_DIR}/cmake/etc/uncrustify/default.cfg)
endif()

8
hpp/pvs_studio.hpp.in Normal file
View File

@@ -0,0 +1,8 @@
#ifndef PVS_STUDIO_HPP_
#define PVS_STUDIO_HPP_
#pragma once
//-V813_MINSIZE=33
#endif // PVS_STUDIO_HPP_

View File

@@ -1136,6 +1136,11 @@ function (cotire_parse_includes _language _scanOutput _ignoredIncludeDirs _honor
string (REPLACE ";" "\\;" _scanOutput "${_scanOutput}")
# then separate lines
string (REGEX REPLACE "\n" ";" _scanOutput "${_scanOutput}")
if ("${_language}" STREQUAL "CXX")
# Fix clang9's libc++ errno
message (STATUS "replacing <stdlib.h> with <cstdlib>")
string (REGEX REPLACE "include_next" "include" _scanOutput "${_scanOutput}")
endif()
list (LENGTH _scanOutput _len)
# remove duplicate lines to speed up parsing
list (REMOVE_DUPLICATES _scanOutput)