diff options
Diffstat (limited to 'Modules/CheckIncludeFileCXX.cmake')
-rw-r--r-- | Modules/CheckIncludeFileCXX.cmake | 67 |
1 files changed, 39 insertions, 28 deletions
diff --git a/Modules/CheckIncludeFileCXX.cmake b/Modules/CheckIncludeFileCXX.cmake index 22c2d1ac7..19b1ef6f8 100644 --- a/Modules/CheckIncludeFileCXX.cmake +++ b/Modules/CheckIncludeFileCXX.cmake @@ -1,35 +1,40 @@ -# - Check if the include file exists. -# CHECK_INCLUDE_FILE_CXX(INCLUDE VARIABLE) +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#.rst: +# CheckIncludeFileCXX +# ------------------- # -# INCLUDE - name of include file -# VARIABLE - variable to return result +# Provides a macro to check if a header file can be included in ``CXX``. # -# An optional third argument is the CFlags to add to the compile line -# or you can use CMAKE_REQUIRED_FLAGS. +# .. command:: CHECK_INCLUDE_FILE_CXX # -# The following variables may be set before calling this macro to -# modify the way the check is run: +# :: # -# CMAKE_REQUIRED_FLAGS = string of compile command line flags -# CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) -# CMAKE_REQUIRED_INCLUDES = list of include directories +# CHECK_INCLUDE_FILE_CXX(<include> <variable> [<flags>]) # - -#============================================================================= -# Copyright 2002-2009 Kitware, Inc. +# Check if the given ``<include>`` file may be included in a ``CXX`` +# source file and store the result in an internal cache entry named +# ``<variable>``. The optional third argument may be used to add +# compilation flags to the check (or use ``CMAKE_REQUIRED_FLAGS`` below). # -# Distributed under the OSI-approved BSD License (the "License"); -# see accompanying file Copyright.txt for details. +# The following variables may be set before calling this macro to modify +# the way the check is run: # -# This software is distributed WITHOUT ANY WARRANTY; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# See the License for more information. -#============================================================================= -# (To distribute this file outside of CMake, substitute the full -# License text for the above reference.) +# ``CMAKE_REQUIRED_FLAGS`` +# string of compile command line flags +# ``CMAKE_REQUIRED_DEFINITIONS`` +# list of macros to define (-DFOO=bar) +# ``CMAKE_REQUIRED_INCLUDES`` +# list of include directories +# ``CMAKE_REQUIRED_QUIET`` +# execute quietly without messages +# +# See modules :module:`CheckIncludeFile` and :module:`CheckIncludeFiles` +# to check for one or more ``C`` headers. macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE) - if("${VARIABLE}" MATCHES "^${VARIABLE}$") + if(NOT DEFINED "${VARIABLE}" OR "x${${VARIABLE}}" STREQUAL "x${VARIABLE}") if(CMAKE_REQUIRED_INCLUDES) set(CHECK_INCLUDE_FILE_CXX_INCLUDE_DIRS "-DINCLUDE_DIRECTORIES=${CMAKE_REQUIRED_INCLUDES}") else() @@ -38,11 +43,13 @@ macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE) set(MACRO_CHECK_INCLUDE_FILE_FLAGS ${CMAKE_REQUIRED_FLAGS}) set(CHECK_INCLUDE_FILE_VAR ${INCLUDE}) configure_file(${CMAKE_ROOT}/Modules/CheckIncludeFile.cxx.in - ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx IMMEDIATE) - message(STATUS "Looking for C++ include ${INCLUDE}") + ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckIncludeFile.cxx) + if(NOT CMAKE_REQUIRED_QUIET) + message(STATUS "Looking for C++ include ${INCLUDE}") + endif() if(${ARGC} EQUAL 3) set(CMAKE_CXX_FLAGS_SAVE ${CMAKE_CXX_FLAGS}) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ARGV2}") + string(APPEND CMAKE_CXX_FLAGS " ${ARGV2}") endif() try_compile(${VARIABLE} @@ -59,14 +66,18 @@ macro(CHECK_INCLUDE_FILE_CXX INCLUDE VARIABLE) endif() if(${VARIABLE}) - message(STATUS "Looking for C++ include ${INCLUDE} - found") + if(NOT CMAKE_REQUIRED_QUIET) + message(STATUS "Looking for C++ include ${INCLUDE} - found") + endif() set(${VARIABLE} 1 CACHE INTERNAL "Have include ${INCLUDE}") file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log "Determining if the include file ${INCLUDE} " "exists passed with the following output:\n" "${OUTPUT}\n\n") else() - message(STATUS "Looking for C++ include ${INCLUDE} - not found") + if(NOT CMAKE_REQUIRED_QUIET) + message(STATUS "Looking for C++ include ${INCLUDE} - not found") + endif() set(${VARIABLE} "" CACHE INTERNAL "Have include ${INCLUDE}") file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log "Determining if the include file ${INCLUDE} " |