1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.
#[=======================================================================[.rst:
CheckOBJCXXSourceCompiles
-------------------------
.. versionadded:: 3.16
This module provides a command to check whether an Objective-C++ source can
be built.
Load this module in a CMake project with:
.. code-block:: cmake
include(CheckOBJCXXSourceCompiles)
Commands
^^^^^^^^
This module provides the following command:
.. command:: check_objcxx_source_compiles
Checks once whether the given Objective-C++ source code can be built:
.. code-block:: cmake
check_objcxx_source_compiles(<code> <variable> [FAIL_REGEX <regexes>...])
This command checks once that the source supplied in ``<code>`` can be
compiled (and linked into an executable). The result of the check is
stored in the internal cache variable specified by ``<variable>``.
The arguments are:
``<code>``
Objective-C++ source code to check. This must be an entire program, as
written in a file containing the body block. All symbols used in the
source code are expected to be declared as usual in their corresponding
headers.
``<variable>``
Variable name of an internal cache variable to store the result of the
check, with boolean true for success and boolean false for failure.
``FAIL_REGEX <regexes>...``
If this option is provided with one or more regular expressions, then
failure is determined by checking if anything in the compiler output
matches any of the specified regular expressions.
.. rubric:: Variables Affecting the Check
The following variables may be set before calling this command to modify
the way the check is run:
.. include:: /module/include/CMAKE_REQUIRED_FLAGS.rst
.. include:: /module/include/CMAKE_REQUIRED_DEFINITIONS.rst
.. include:: /module/include/CMAKE_REQUIRED_INCLUDES.rst
.. include:: /module/include/CMAKE_REQUIRED_LINK_OPTIONS.rst
.. include:: /module/include/CMAKE_REQUIRED_LIBRARIES.rst
.. include:: /module/include/CMAKE_REQUIRED_LINK_DIRECTORIES.rst
.. include:: /module/include/CMAKE_REQUIRED_QUIET.rst
.. include:: /module/include/CMAKE_TRY_COMPILE_TARGET_TYPE.rst
Examples
^^^^^^^^
In the following example, this module is used to check whether the provided
Objective-C++ source code can be compiled and linked. Result of the check
is stored in the internal cache variable ``HAVE_WORKING_CODE``.
.. code-block:: cmake
include(CheckOBJCXXSourceCompiles)
check_objcxx_source_compiles("
#include <vector>
#import <Foundation/Foundation.h>
int main()
{
std::vector<int> v;
NSObject *foo;
return 0;
}
" HAVE_WORKING_CODE)
See Also
^^^^^^^^
* The :module:`CheckSourceCompiles` module for a more general command to
check whether source can be built.
* The :module:`CheckSourceRuns` module to check whether source can be built
and run.
#]=======================================================================]
include_guard(GLOBAL)
include(Internal/CheckSourceCompiles)
macro(CHECK_OBJCXX_SOURCE_COMPILES SOURCE VAR)
cmake_check_source_compiles(OBJCXX "${SOURCE}" ${VAR} ${ARGN})
endmacro()
|