8388 lines
302 KiB
Groff
8388 lines
302 KiB
Groff
.\" Man page generated from reStructuredText.
|
||
.
|
||
.TH "CMAKE-PROPERTIES" "7" "Aug 20, 2020" "3.18.2" "CMake"
|
||
.SH NAME
|
||
cmake-properties \- CMake Properties Reference
|
||
.
|
||
.nr rst2man-indent-level 0
|
||
.
|
||
.de1 rstReportMargin
|
||
\\$1 \\n[an-margin]
|
||
level \\n[rst2man-indent-level]
|
||
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||
-
|
||
\\n[rst2man-indent0]
|
||
\\n[rst2man-indent1]
|
||
\\n[rst2man-indent2]
|
||
..
|
||
.de1 INDENT
|
||
.\" .rstReportMargin pre:
|
||
. RS \\$1
|
||
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
||
. nr rst2man-indent-level +1
|
||
.\" .rstReportMargin post:
|
||
..
|
||
.de UNINDENT
|
||
. RE
|
||
.\" indent \\n[an-margin]
|
||
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||
.nr rst2man-indent-level -1
|
||
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
||
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
||
..
|
||
.SH PROPERTIES OF GLOBAL SCOPE
|
||
.SS ALLOW_DUPLICATE_CUSTOM_TARGETS
|
||
.sp
|
||
Allow duplicate custom targets to be created.
|
||
.sp
|
||
Normally CMake requires that all targets built in a project have
|
||
globally unique logical names (see policy \fBCMP0002\fP).
|
||
This is necessary to generate meaningful project file names in
|
||
\fBXcode\fP and Visual Studio Generators IDE
|
||
generators. It also allows the target names to be referenced
|
||
unambiguously.
|
||
.sp
|
||
Makefile generators are capable of supporting duplicate \fBadd_custom_target()\fP
|
||
names. For projects that care only about Makefile Generators and do
|
||
not wish to support \fBXcode\fP or Visual Studio Generators IDE
|
||
generators, one may set this property to \fBTrue\fP
|
||
to allow duplicate custom targets. The property
|
||
allows multiple \fBadd_custom_target()\fP command calls in different
|
||
directories to specify the same target name. However, setting this
|
||
property will cause non\-Makefile generators to produce an error and
|
||
refuse to generate the project.
|
||
.SS AUTOGEN_SOURCE_GROUP
|
||
.sp
|
||
Name of the \fBsource_group()\fP for \fBAUTOMOC\fP and
|
||
\fBAUTORCC\fP generated files.
|
||
.sp
|
||
Files generated by \fBAUTOMOC\fP and \fBAUTORCC\fP are not always
|
||
known at configure time and therefore can’t be passed to
|
||
\fBsource_group()\fP\&.
|
||
\fI\%AUTOGEN_SOURCE_GROUP\fP an be used instead to generate or select
|
||
a source group for \fBAUTOMOC\fP and \fBAUTORCC\fP generated files.
|
||
.sp
|
||
For \fBAUTOMOC\fP and \fBAUTORCC\fP specific overrides see
|
||
\fBAUTOMOC_SOURCE_GROUP\fP and \fBAUTORCC_SOURCE_GROUP\fP
|
||
respectively.
|
||
.SS AUTOGEN_TARGETS_FOLDER
|
||
.sp
|
||
Name of \fBFOLDER\fP for \fB*_autogen\fP targets that are added
|
||
automatically by CMake for targets for which \fBAUTOMOC\fP is enabled.
|
||
.sp
|
||
If not set, CMake uses the \fBFOLDER\fP property of the parent target as a
|
||
default value for this property. See also the documentation for the
|
||
\fBFOLDER\fP target property and the \fBAUTOMOC\fP target property.
|
||
.SS AUTOMOC_SOURCE_GROUP
|
||
.sp
|
||
Name of the \fBsource_group()\fP for \fBAUTOMOC\fP generated files.
|
||
.sp
|
||
When set this is used instead of \fBAUTOGEN_SOURCE_GROUP\fP for
|
||
files generated by \fBAUTOMOC\fP\&.
|
||
.SS AUTOMOC_TARGETS_FOLDER
|
||
.sp
|
||
Name of \fBFOLDER\fP for \fB*_autogen\fP targets that are added automatically by
|
||
CMake for targets for which \fBAUTOMOC\fP is enabled.
|
||
.sp
|
||
This property is obsolete. Use \fBAUTOGEN_TARGETS_FOLDER\fP instead.
|
||
.sp
|
||
If not set, CMake uses the \fBFOLDER\fP property of the parent target as a
|
||
default value for this property. See also the documentation for the
|
||
\fBFOLDER\fP target property and the \fBAUTOMOC\fP target property.
|
||
.SS AUTORCC_SOURCE_GROUP
|
||
.sp
|
||
Name of the \fBsource_group()\fP for \fBAUTORCC\fP generated files.
|
||
.sp
|
||
When set this is used instead of \fBAUTOGEN_SOURCE_GROUP\fP for
|
||
files generated by \fBAUTORCC\fP\&.
|
||
.SS CMAKE_C_KNOWN_FEATURES
|
||
.sp
|
||
List of C features known to this version of CMake.
|
||
.sp
|
||
The features listed in this global property may be known to be available to the
|
||
C compiler. If the feature is available with the C compiler, it will
|
||
be listed in the \fBCMAKE_C_COMPILE_FEATURES\fP variable.
|
||
.sp
|
||
The features listed here may be used with the \fBtarget_compile_features()\fP
|
||
command. See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
The features known to this version of CMake are:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBc_std_90\fP
|
||
Compiler mode is at least C 90.
|
||
.TP
|
||
.B \fBc_std_99\fP
|
||
Compiler mode is at least C 99.
|
||
.TP
|
||
.B \fBc_std_11\fP
|
||
Compiler mode is at least C 11.
|
||
.TP
|
||
.B \fBc_function_prototypes\fP
|
||
Function prototypes, as defined in \fBISO/IEC 9899:1990\fP\&.
|
||
.TP
|
||
.B \fBc_restrict\fP
|
||
\fBrestrict\fP keyword, as defined in \fBISO/IEC 9899:1999\fP\&.
|
||
.TP
|
||
.B \fBc_static_assert\fP
|
||
Static assert, as defined in \fBISO/IEC 9899:2011\fP\&.
|
||
.TP
|
||
.B \fBc_variadic_macros\fP
|
||
Variadic macros, as defined in \fBISO/IEC 9899:1999\fP\&.
|
||
.UNINDENT
|
||
.SS CMAKE_CUDA_KNOWN_FEATURES
|
||
.sp
|
||
List of CUDA features known to this version of CMake.
|
||
.sp
|
||
The features listed in this global property may be known to be available to the
|
||
CUDA compiler. If the feature is available with the C++ compiler, it will
|
||
be listed in the \fBCMAKE_CUDA_COMPILE_FEATURES\fP variable.
|
||
.sp
|
||
The features listed here may be used with the \fBtarget_compile_features()\fP
|
||
command. See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
The features known to this version of CMake are:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBcuda_std_03\fP
|
||
Compiler mode is at least CUDA/C++ 03.
|
||
.TP
|
||
.B \fBcuda_std_11\fP
|
||
Compiler mode is at least CUDA/C++ 11.
|
||
.TP
|
||
.B \fBcuda_std_14\fP
|
||
Compiler mode is at least CUDA/C++ 14.
|
||
.TP
|
||
.B \fBcuda_std_17\fP
|
||
Compiler mode is at least CUDA/C++ 17.
|
||
.TP
|
||
.B \fBcuda_std_20\fP
|
||
Compiler mode is at least CUDA/C++ 20.
|
||
.UNINDENT
|
||
.SS CMAKE_CXX_KNOWN_FEATURES
|
||
.sp
|
||
List of C++ features known to this version of CMake.
|
||
.sp
|
||
The features listed in this global property may be known to be available to the
|
||
C++ compiler. If the feature is available with the C++ compiler, it will
|
||
be listed in the \fBCMAKE_CXX_COMPILE_FEATURES\fP variable.
|
||
.sp
|
||
The features listed here may be used with the \fBtarget_compile_features()\fP
|
||
command. See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
The features known to this version of CMake are:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBcxx_std_98\fP
|
||
Compiler mode is at least C++ 98.
|
||
.TP
|
||
.B \fBcxx_std_11\fP
|
||
Compiler mode is at least C++ 11.
|
||
.TP
|
||
.B \fBcxx_std_14\fP
|
||
Compiler mode is at least C++ 14.
|
||
.TP
|
||
.B \fBcxx_std_17\fP
|
||
Compiler mode is at least C++ 17.
|
||
.TP
|
||
.B \fBcxx_std_20\fP
|
||
Compiler mode is at least C++ 20.
|
||
.TP
|
||
.B \fBcxx_aggregate_default_initializers\fP
|
||
Aggregate default initializers, as defined in \fI\%N3605\fP\&.
|
||
.TP
|
||
.B \fBcxx_alias_templates\fP
|
||
Template aliases, as defined in \fI\%N2258\fP\&.
|
||
.TP
|
||
.B \fBcxx_alignas\fP
|
||
Alignment control \fBalignas\fP, as defined in \fI\%N2341\fP\&.
|
||
.TP
|
||
.B \fBcxx_alignof\fP
|
||
Alignment control \fBalignof\fP, as defined in \fI\%N2341\fP\&.
|
||
.TP
|
||
.B \fBcxx_attributes\fP
|
||
Generic attributes, as defined in \fI\%N2761\fP\&.
|
||
.TP
|
||
.B \fBcxx_attribute_deprecated\fP
|
||
\fB[[deprecated]]\fP attribute, as defined in \fI\%N3760\fP\&.
|
||
.TP
|
||
.B \fBcxx_auto_type\fP
|
||
Automatic type deduction, as defined in \fI\%N1984\fP\&.
|
||
.TP
|
||
.B \fBcxx_binary_literals\fP
|
||
Binary literals, as defined in \fI\%N3472\fP\&.
|
||
.TP
|
||
.B \fBcxx_constexpr\fP
|
||
Constant expressions, as defined in \fI\%N2235\fP\&.
|
||
.TP
|
||
.B \fBcxx_contextual_conversions\fP
|
||
Contextual conversions, as defined in \fI\%N3323\fP\&.
|
||
.TP
|
||
.B \fBcxx_decltype_incomplete_return_types\fP
|
||
Decltype on incomplete return types, as defined in \fI\%N3276\fP\&.
|
||
.TP
|
||
.B \fBcxx_decltype\fP
|
||
Decltype, as defined in \fI\%N2343\fP\&.
|
||
.TP
|
||
.B \fBcxx_decltype_auto\fP
|
||
\fBdecltype(auto)\fP semantics, as defined in \fI\%N3638\fP\&.
|
||
.TP
|
||
.B \fBcxx_default_function_template_args\fP
|
||
Default template arguments for function templates, as defined in \fI\%DR226\fP
|
||
.TP
|
||
.B \fBcxx_defaulted_functions\fP
|
||
Defaulted functions, as defined in \fI\%N2346\fP\&.
|
||
.TP
|
||
.B \fBcxx_defaulted_move_initializers\fP
|
||
Defaulted move initializers, as defined in \fI\%N3053\fP\&.
|
||
.TP
|
||
.B \fBcxx_delegating_constructors\fP
|
||
Delegating constructors, as defined in \fI\%N1986\fP\&.
|
||
.TP
|
||
.B \fBcxx_deleted_functions\fP
|
||
Deleted functions, as defined in \fI\%N2346\fP\&.
|
||
.TP
|
||
.B \fBcxx_digit_separators\fP
|
||
Digit separators, as defined in \fI\%N3781\fP\&.
|
||
.TP
|
||
.B \fBcxx_enum_forward_declarations\fP
|
||
Enum forward declarations, as defined in \fI\%N2764\fP\&.
|
||
.TP
|
||
.B \fBcxx_explicit_conversions\fP
|
||
Explicit conversion operators, as defined in \fI\%N2437\fP\&.
|
||
.TP
|
||
.B \fBcxx_extended_friend_declarations\fP
|
||
Extended friend declarations, as defined in \fI\%N1791\fP\&.
|
||
.TP
|
||
.B \fBcxx_extern_templates\fP
|
||
Extern templates, as defined in \fI\%N1987\fP\&.
|
||
.TP
|
||
.B \fBcxx_final\fP
|
||
Override control \fBfinal\fP keyword, as defined in \fI\%N2928\fP, \fI\%N3206\fP and \fI\%N3272\fP\&.
|
||
.TP
|
||
.B \fBcxx_func_identifier\fP
|
||
Predefined \fB__func__\fP identifier, as defined in \fI\%N2340\fP\&.
|
||
.TP
|
||
.B \fBcxx_generalized_initializers\fP
|
||
Initializer lists, as defined in \fI\%N2672\fP\&.
|
||
.TP
|
||
.B \fBcxx_generic_lambdas\fP
|
||
Generic lambdas, as defined in \fI\%N3649\fP\&.
|
||
.TP
|
||
.B \fBcxx_inheriting_constructors\fP
|
||
Inheriting constructors, as defined in \fI\%N2540\fP\&.
|
||
.TP
|
||
.B \fBcxx_inline_namespaces\fP
|
||
Inline namespaces, as defined in \fI\%N2535\fP\&.
|
||
.TP
|
||
.B \fBcxx_lambdas\fP
|
||
Lambda functions, as defined in \fI\%N2927\fP\&.
|
||
.TP
|
||
.B \fBcxx_lambda_init_captures\fP
|
||
Initialized lambda captures, as defined in \fI\%N3648\fP\&.
|
||
.TP
|
||
.B \fBcxx_local_type_template_args\fP
|
||
Local and unnamed types as template arguments, as defined in \fI\%N2657\fP\&.
|
||
.TP
|
||
.B \fBcxx_long_long_type\fP
|
||
\fBlong long\fP type, as defined in \fI\%N1811\fP\&.
|
||
.TP
|
||
.B \fBcxx_noexcept\fP
|
||
Exception specifications, as defined in \fI\%N3050\fP\&.
|
||
.TP
|
||
.B \fBcxx_nonstatic_member_init\fP
|
||
Non\-static data member initialization, as defined in \fI\%N2756\fP\&.
|
||
.TP
|
||
.B \fBcxx_nullptr\fP
|
||
Null pointer, as defined in \fI\%N2431\fP\&.
|
||
.TP
|
||
.B \fBcxx_override\fP
|
||
Override control \fBoverride\fP keyword, as defined in \fI\%N2928\fP, \fI\%N3206\fP
|
||
and \fI\%N3272\fP\&.
|
||
.TP
|
||
.B \fBcxx_range_for\fP
|
||
Range\-based for, as defined in \fI\%N2930\fP\&.
|
||
.TP
|
||
.B \fBcxx_raw_string_literals\fP
|
||
Raw string literals, as defined in \fI\%N2442\fP\&.
|
||
.TP
|
||
.B \fBcxx_reference_qualified_functions\fP
|
||
Reference qualified functions, as defined in \fI\%N2439\fP\&.
|
||
.TP
|
||
.B \fBcxx_relaxed_constexpr\fP
|
||
Relaxed constexpr, as defined in \fI\%N3652\fP\&.
|
||
.TP
|
||
.B \fBcxx_return_type_deduction\fP
|
||
Return type deduction on normal functions, as defined in \fI\%N3386\fP\&.
|
||
.TP
|
||
.B \fBcxx_right_angle_brackets\fP
|
||
Right angle bracket parsing, as defined in \fI\%N1757\fP\&.
|
||
.TP
|
||
.B \fBcxx_rvalue_references\fP
|
||
R\-value references, as defined in \fI\%N2118\fP\&.
|
||
.TP
|
||
.B \fBcxx_sizeof_member\fP
|
||
Size of non\-static data members, as defined in \fI\%N2253\fP\&.
|
||
.TP
|
||
.B \fBcxx_static_assert\fP
|
||
Static assert, as defined in \fI\%N1720\fP\&.
|
||
.TP
|
||
.B \fBcxx_strong_enums\fP
|
||
Strongly typed enums, as defined in \fI\%N2347\fP\&.
|
||
.TP
|
||
.B \fBcxx_thread_local\fP
|
||
Thread\-local variables, as defined in \fI\%N2659\fP\&.
|
||
.TP
|
||
.B \fBcxx_trailing_return_types\fP
|
||
Automatic function return type, as defined in \fI\%N2541\fP\&.
|
||
.TP
|
||
.B \fBcxx_unicode_literals\fP
|
||
Unicode string literals, as defined in \fI\%N2442\fP\&.
|
||
.TP
|
||
.B \fBcxx_uniform_initialization\fP
|
||
Uniform initialization, as defined in \fI\%N2640\fP\&.
|
||
.TP
|
||
.B \fBcxx_unrestricted_unions\fP
|
||
Unrestricted unions, as defined in \fI\%N2544\fP\&.
|
||
.TP
|
||
.B \fBcxx_user_literals\fP
|
||
User\-defined literals, as defined in \fI\%N2765\fP\&.
|
||
.TP
|
||
.B \fBcxx_variable_templates\fP
|
||
Variable templates, as defined in \fI\%N3651\fP\&.
|
||
.TP
|
||
.B \fBcxx_variadic_macros\fP
|
||
Variadic macros, as defined in \fI\%N1653\fP\&.
|
||
.TP
|
||
.B \fBcxx_variadic_templates\fP
|
||
Variadic templates, as defined in \fI\%N2242\fP\&.
|
||
.TP
|
||
.B \fBcxx_template_template_parameters\fP
|
||
Template template parameters, as defined in \fBISO/IEC 14882:1998\fP\&.
|
||
.UNINDENT
|
||
.SS CMAKE_ROLE
|
||
.sp
|
||
Tells what mode the current running script is in. Could be one of several
|
||
values:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBPROJECT\fP
|
||
Running in project mode (processing a \fBCMakeLists.txt\fP file).
|
||
.TP
|
||
.B \fBSCRIPT\fP
|
||
Running in \fB\-P\fP script mode.
|
||
.TP
|
||
.B \fBFIND_PACKAGE\fP
|
||
Running in \fB\-\-find\-package\fP mode.
|
||
.TP
|
||
.B \fBCTEST\fP
|
||
Running in CTest script mode.
|
||
.TP
|
||
.B \fBCPACK\fP
|
||
Running in CPack.
|
||
.UNINDENT
|
||
.SS DEBUG_CONFIGURATIONS
|
||
.sp
|
||
Specify which configurations are for debugging.
|
||
.sp
|
||
The value must be a semi\-colon separated list of configuration names.
|
||
Currently this property is used only by the \fBtarget_link_libraries()\fP
|
||
command. Additional uses may be defined in the future.
|
||
.sp
|
||
This property must be set at the top level of the project and before
|
||
the first \fBtarget_link_libraries()\fP command invocation. If any entry in
|
||
the list does not match a valid configuration for the project the
|
||
behavior is undefined.
|
||
.SS DISABLED_FEATURES
|
||
.sp
|
||
List of features which are disabled during the CMake run.
|
||
.sp
|
||
List of features which are disabled during the CMake run. By default
|
||
it contains the names of all packages which were not found. This is
|
||
determined using the \fB<NAME>_FOUND\fP variables. Packages which are
|
||
searched \fBQUIET\fP are not listed. A project can add its own features to
|
||
this list. This property is used by the macros in
|
||
\fBFeatureSummary.cmake\fP\&.
|
||
.SS ECLIPSE_EXTRA_CPROJECT_CONTENTS
|
||
.sp
|
||
Additional contents to be inserted into the generated Eclipse cproject file.
|
||
.sp
|
||
The cproject file defines the CDT specific information. Some third party IDE’s
|
||
are based on Eclipse with the addition of other information specific to that IDE.
|
||
Through this property, it is possible to add this additional contents to
|
||
the generated project.
|
||
It is expected to contain valid XML.
|
||
.sp
|
||
Also see the \fBECLIPSE_EXTRA_NATURES\fP property.
|
||
.SS ECLIPSE_EXTRA_NATURES
|
||
.sp
|
||
List of natures to add to the generated Eclipse project file.
|
||
.sp
|
||
Eclipse projects specify language plugins by using natures. This property
|
||
should be set to the unique identifier for a nature (which looks like a Java
|
||
package name).
|
||
.sp
|
||
Also see the \fBECLIPSE_EXTRA_CPROJECT_CONTENTS\fP property.
|
||
.SS ENABLED_FEATURES
|
||
.sp
|
||
List of features which are enabled during the CMake run.
|
||
.sp
|
||
List of features which are enabled during the CMake run. By default
|
||
it contains the names of all packages which were found. This is
|
||
determined using the \fB<NAME>_FOUND\fP variables. Packages which are
|
||
searched \fBQUIET\fP are not listed. A project can add its own features to
|
||
this list. This property is used by the macros in
|
||
\fBFeatureSummary.cmake\fP\&.
|
||
.SS ENABLED_LANGUAGES
|
||
.sp
|
||
Read\-only property that contains the list of currently enabled languages
|
||
.sp
|
||
Set to list of currently enabled languages.
|
||
.SS FIND_LIBRARY_USE_LIB32_PATHS
|
||
.sp
|
||
Whether the \fBfind_library()\fP command should automatically search
|
||
\fBlib32\fP directories.
|
||
.sp
|
||
\fBFIND_LIBRARY_USE_LIB32_PATHS\fP is a boolean specifying whether the
|
||
\fBfind_library()\fP command should automatically search the \fBlib32\fP
|
||
variant of directories called \fBlib\fP in the search path when building 32\-bit
|
||
binaries.
|
||
.sp
|
||
See also the \fBCMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX\fP variable.
|
||
.SS FIND_LIBRARY_USE_LIB64_PATHS
|
||
.sp
|
||
Whether \fBfind_library()\fP should automatically search lib64
|
||
directories.
|
||
.sp
|
||
FIND_LIBRARY_USE_LIB64_PATHS is a boolean specifying whether the
|
||
\fBfind_library()\fP command should automatically search the lib64
|
||
variant of directories called lib in the search path when building
|
||
64\-bit binaries.
|
||
.sp
|
||
See also the \fBCMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX\fP variable.
|
||
.SS FIND_LIBRARY_USE_LIBX32_PATHS
|
||
.sp
|
||
Whether the \fBfind_library()\fP command should automatically search
|
||
\fBlibx32\fP directories.
|
||
.sp
|
||
\fBFIND_LIBRARY_USE_LIBX32_PATHS\fP is a boolean specifying whether the
|
||
\fBfind_library()\fP command should automatically search the \fBlibx32\fP
|
||
variant of directories called \fBlib\fP in the search path when building
|
||
x32\-abi binaries.
|
||
.sp
|
||
See also the \fBCMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX\fP variable.
|
||
.SS FIND_LIBRARY_USE_OPENBSD_VERSIONING
|
||
.sp
|
||
Whether \fBfind_library()\fP should find OpenBSD\-style shared
|
||
libraries.
|
||
.sp
|
||
This property is a boolean specifying whether the
|
||
\fBfind_library()\fP command should find shared libraries with
|
||
OpenBSD\-style versioned extension: “.so.<major>.<minor>”. The
|
||
property is set to true on OpenBSD and false on other platforms.
|
||
.SS GENERATOR_IS_MULTI_CONFIG
|
||
.sp
|
||
Read\-only property that is true on multi\-configuration generators.
|
||
.sp
|
||
True when using a multi\-configuration generator
|
||
(such as Visual Studio Generators or \fBXcode\fP).
|
||
Multi\-config generators use \fBCMAKE_CONFIGURATION_TYPES\fP
|
||
as the set of configurations and ignore \fBCMAKE_BUILD_TYPE\fP\&.
|
||
.SS GLOBAL_DEPENDS_DEBUG_MODE
|
||
.sp
|
||
Enable global target dependency graph debug mode.
|
||
.sp
|
||
CMake automatically analyzes the global inter\-target dependency graph
|
||
at the beginning of native build system generation. This property
|
||
causes it to display details of its analysis to stderr.
|
||
.SS GLOBAL_DEPENDS_NO_CYCLES
|
||
.sp
|
||
Disallow global target dependency graph cycles.
|
||
.sp
|
||
CMake automatically analyzes the global inter\-target dependency graph
|
||
at the beginning of native build system generation. It reports an
|
||
error if the dependency graph contains a cycle that does not consist
|
||
of all STATIC library targets. This property tells CMake to disallow
|
||
all cycles completely, even among static libraries.
|
||
.SS IN_TRY_COMPILE
|
||
.sp
|
||
Read\-only property that is true during a try\-compile configuration.
|
||
.sp
|
||
True when building a project inside a \fBtry_compile()\fP or
|
||
\fBtry_run()\fP command.
|
||
.SS JOB_POOLS
|
||
.sp
|
||
Ninja only: List of available pools.
|
||
.sp
|
||
A pool is a named integer property and defines the maximum number
|
||
of concurrent jobs which can be started by a rule assigned to the pool.
|
||
The \fI\%JOB_POOLS\fP property is a semicolon\-separated list of
|
||
pairs using the syntax NAME=integer (without a space after the equality sign).
|
||
.sp
|
||
For instance:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(GLOBAL PROPERTY JOB_POOLS two_jobs=2 ten_jobs=10)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Defined pools could be used globally by setting
|
||
\fBCMAKE_JOB_POOL_COMPILE\fP and \fBCMAKE_JOB_POOL_LINK\fP
|
||
or per target by setting the target properties
|
||
\fBJOB_POOL_COMPILE\fP and \fBJOB_POOL_LINK\fP\&.
|
||
\fBCustom commands\fP and
|
||
\fBcustom targets\fP can specify pools using the
|
||
option \fBJOB_POOL\fP\&.
|
||
Using a pool that is not defined by \fI\%JOB_POOLS\fP causes
|
||
an error by ninja at build time.
|
||
.sp
|
||
If not set, this property uses the value of the \fBCMAKE_JOB_POOLS\fP
|
||
variable.
|
||
.sp
|
||
Build targets provided by CMake that are meant for individual interactive
|
||
use, such as \fBinstall\fP, are placed in the \fBconsole\fP pool automatically.
|
||
.SS PACKAGES_FOUND
|
||
.sp
|
||
List of packages which were found during the CMake run.
|
||
.sp
|
||
List of packages which were found during the CMake run. Whether a
|
||
package has been found is determined using the <NAME>_FOUND variables.
|
||
.SS PACKAGES_NOT_FOUND
|
||
.sp
|
||
List of packages which were not found during the CMake run.
|
||
.sp
|
||
List of packages which were not found during the CMake run. Whether a
|
||
package has been found is determined using the <NAME>_FOUND variables.
|
||
.SS PREDEFINED_TARGETS_FOLDER
|
||
.sp
|
||
Name of FOLDER for targets that are added automatically by CMake.
|
||
.sp
|
||
If not set, CMake uses “CMakePredefinedTargets” as a default value for
|
||
this property. Targets such as INSTALL, PACKAGE and RUN_TESTS will be
|
||
organized into this FOLDER. See also the documentation for the
|
||
\fBFOLDER\fP target property.
|
||
.SS REPORT_UNDEFINED_PROPERTIES
|
||
.sp
|
||
If set, report any undefined properties to this file.
|
||
.sp
|
||
If this property is set to a filename then when CMake runs it will
|
||
report any properties or variables that were accessed but not defined
|
||
into the filename specified in this property.
|
||
.SS RULE_LAUNCH_COMPILE
|
||
.sp
|
||
Specify a launcher for compile rules.
|
||
.sp
|
||
Makefile Generators and the \fBNinja\fP generator prefix
|
||
compiler commands with the given launcher command line.
|
||
This is intended to allow launchers to intercept build problems
|
||
with high granularity. Other generators ignore this property
|
||
because their underlying build systems provide no hook to wrap
|
||
individual commands with a launcher.
|
||
.SS RULE_LAUNCH_CUSTOM
|
||
.sp
|
||
Specify a launcher for custom rules.
|
||
.sp
|
||
Makefile Generators and the \fBNinja\fP generator prefix
|
||
custom commands with the given launcher command line.
|
||
This is intended to allow launchers to intercept build problems
|
||
with high granularity. Other generators ignore this property
|
||
because their underlying build systems provide no hook to wrap
|
||
individual commands with a launcher.
|
||
.SS RULE_LAUNCH_LINK
|
||
.sp
|
||
Specify a launcher for link rules.
|
||
.sp
|
||
Makefile Generators and the \fBNinja\fP generator prefix
|
||
link and archive commands with the given launcher command line.
|
||
This is intended to allow launchers to intercept build problems
|
||
with high granularity. Other generators ignore this property
|
||
because their underlying build systems provide no hook to wrap
|
||
individual commands with a launcher.
|
||
.SS RULE_MESSAGES
|
||
.sp
|
||
Specify whether to report a message for each make rule.
|
||
.sp
|
||
This property specifies whether Makefile generators should add a
|
||
progress message describing what each build rule does. If the
|
||
property is not set the default is ON. Set the property to OFF to
|
||
disable granular messages and report only as each target completes.
|
||
This is intended to allow scripted builds to avoid the build time cost
|
||
of detailed reports. If a \fBCMAKE_RULE_MESSAGES\fP cache entry exists
|
||
its value initializes the value of this property. Non\-Makefile
|
||
generators currently ignore this property.
|
||
.SS TARGET_ARCHIVES_MAY_BE_SHARED_LIBS
|
||
.sp
|
||
Set if shared libraries may be named like archives.
|
||
.sp
|
||
On AIX shared libraries may be named “lib<name>.a”. This property is
|
||
set to true on such platforms.
|
||
.SS TARGET_MESSAGES
|
||
.sp
|
||
Specify whether to report the completion of each target.
|
||
.sp
|
||
This property specifies whether Makefile Generators should
|
||
add a progress message describing that each target has been completed.
|
||
If the property is not set the default is \fBON\fP\&. Set the property
|
||
to \fBOFF\fP to disable target completion messages.
|
||
.sp
|
||
This option is intended to reduce build output when little or no
|
||
work needs to be done to bring the build tree up to date.
|
||
.sp
|
||
If a \fBCMAKE_TARGET_MESSAGES\fP cache entry exists its value
|
||
initializes the value of this property.
|
||
.sp
|
||
Non\-Makefile generators currently ignore this property.
|
||
.sp
|
||
See the counterpart property \fBRULE_MESSAGES\fP to disable
|
||
everything except for target completion messages.
|
||
.SS TARGET_SUPPORTS_SHARED_LIBS
|
||
.sp
|
||
Does the target platform support shared libraries.
|
||
.sp
|
||
TARGET_SUPPORTS_SHARED_LIBS is a boolean specifying whether the target
|
||
platform supports shared libraries. Basically all current general
|
||
general purpose OS do so, the exception are usually embedded systems
|
||
with no or special OSs.
|
||
.SS USE_FOLDERS
|
||
.sp
|
||
Use the \fBFOLDER\fP target property to organize targets into
|
||
folders.
|
||
.sp
|
||
If not set, CMake treats this property as \fBOFF\fP by default. CMake
|
||
generators that are capable of organizing into a hierarchy of folders
|
||
use the values of the \fBFOLDER\fP target property to name those
|
||
folders. See also the documentation for the \fBFOLDER\fP target property.
|
||
.SS XCODE_EMIT_EFFECTIVE_PLATFORM_NAME
|
||
.sp
|
||
Control emission of \fBEFFECTIVE_PLATFORM_NAME\fP by the \fBXcode\fP
|
||
generator.
|
||
.sp
|
||
It is required for building the same target with multiple SDKs. A
|
||
common use case is the parallel use of \fBiphoneos\fP and
|
||
\fBiphonesimulator\fP SDKs.
|
||
.sp
|
||
Three different states possible that control when the \fBXcode\fP
|
||
generator emits the \fBEFFECTIVE_PLATFORM_NAME\fP variable:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
If set to \fBON\fP it will always be emitted
|
||
.IP \(bu 2
|
||
If set to \fBOFF\fP it will never be emitted
|
||
.IP \(bu 2
|
||
If unset (the default) it will only be emitted when the project was
|
||
configured for an embedded Xcode SDK like iOS, tvOS, watchOS or any
|
||
of the simulators.
|
||
.UNINDENT
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
When this behavior is enable for generated Xcode projects, the
|
||
\fBEFFECTIVE_PLATFORM_NAME\fP variable will leak into
|
||
\fBGenerator expressions\fP
|
||
like \fBTARGET_FILE\fP and will render those mostly unusable.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SH PROPERTIES ON DIRECTORIES
|
||
.SS ADDITIONAL_CLEAN_FILES
|
||
.sp
|
||
A ;\-list of files or directories that will be
|
||
removed as a part of the global \fBclean\fP target. It is useful for
|
||
specifying generated files or directories that are used by multiple targets
|
||
or by CMake itself, or that are generated in ways which cannot be captured as
|
||
outputs or byproducts of custom commands.
|
||
.sp
|
||
If an additional clean file is specific to a single target only, then the
|
||
\fBADDITIONAL_CLEAN_FILES\fP target property would usually be a better
|
||
choice than this directory property.
|
||
.sp
|
||
Relative paths are allowed and are interpreted relative to the
|
||
current binary directory.
|
||
.sp
|
||
Contents of \fBADDITIONAL_CLEAN_FILES\fP may use
|
||
\fBgenerator expressions\fP\&.
|
||
.sp
|
||
This property only works for the \fBNinja\fP and the Makefile
|
||
generators. It is ignored by other generators.
|
||
.SS BINARY_DIR
|
||
.sp
|
||
This read\-only directory property reports absolute path to the binary
|
||
directory corresponding to the source on which it is read.
|
||
.SS BUILDSYSTEM_TARGETS
|
||
.sp
|
||
This read\-only directory property contains a
|
||
semicolon\-separated list of buildsystem targets added in the
|
||
directory by calls to the \fBadd_library()\fP, \fBadd_executable()\fP,
|
||
and \fBadd_custom_target()\fP commands. The list does not include any
|
||
Imported Targets or Alias Targets, but does include
|
||
Interface Libraries\&. Each entry in the list is the logical name
|
||
of a target, suitable to pass to the \fBget_property()\fP command
|
||
\fBTARGET\fP option.
|
||
.SS CACHE_VARIABLES
|
||
.sp
|
||
List of cache variables available in the current directory.
|
||
.sp
|
||
This read\-only property specifies the list of CMake cache variables
|
||
currently defined. It is intended for debugging purposes.
|
||
.SS CLEAN_NO_CUSTOM
|
||
.sp
|
||
Set to true to tell Makefile Generators not to remove the outputs of
|
||
custom commands for this directory during the \fBmake clean\fP operation.
|
||
This is ignored on other generators because it is not possible to implement.
|
||
.SS CMAKE_CONFIGURE_DEPENDS
|
||
.sp
|
||
Tell CMake about additional input files to the configuration process.
|
||
If any named file is modified the build system will re\-run CMake to
|
||
re\-configure the file and generate the build system again.
|
||
.sp
|
||
Specify files as a semicolon\-separated list of paths. Relative paths
|
||
are interpreted as relative to the current source directory.
|
||
.SS COMPILE_DEFINITIONS
|
||
.sp
|
||
Preprocessor definitions for compiling a directory’s sources.
|
||
.sp
|
||
This property specifies the list of options given so far to the
|
||
\fBadd_compile_definitions()\fP (or \fBadd_definitions()\fP) command.
|
||
.sp
|
||
The \fBCOMPILE_DEFINITIONS\fP property may be set to a semicolon\-separated
|
||
list of preprocessor definitions using the syntax \fBVAR\fP or \fBVAR=value\fP\&.
|
||
Function\-style definitions are not supported. CMake will
|
||
automatically escape the value correctly for the native build system
|
||
(note that CMake language syntax may require escapes to specify some
|
||
values).
|
||
.sp
|
||
This property will be initialized in each directory by its value in the
|
||
directory’s parent.
|
||
.sp
|
||
CMake will automatically drop some definitions that are not supported
|
||
by the native build tool.
|
||
.sp
|
||
Disclaimer: Most native build tools have poor support for escaping
|
||
certain values. CMake has work\-arounds for many cases but some values
|
||
may just not be possible to pass correctly. If a value does not seem
|
||
to be escaped correctly, do not attempt to work\-around the problem by
|
||
adding escape sequences to the value. Your work\-around may break in a
|
||
future version of CMake that has improved escape support. Instead
|
||
consider defining the macro in a (configured) header file. Then
|
||
report the limitation. Known limitations include:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# \- broken almost everywhere
|
||
; \- broken in VS IDE 7.0 and Borland Makefiles
|
||
, \- broken in VS IDE
|
||
% \- broken in some cases in NMake
|
||
& | \- broken in some cases on MinGW
|
||
^ < > \e" \- broken in most Make tools on Windows
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
CMake does not reject these values outright because they do work in
|
||
some cases. Use with caution.
|
||
.sp
|
||
Contents of \fBCOMPILE_DEFINITIONS\fP may use “generator expressions” with
|
||
the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.sp
|
||
The corresponding \fBCOMPILE_DEFINITIONS_<CONFIG>\fP property may
|
||
be set to specify per\-configuration definitions. Generator expressions
|
||
should be preferred instead of setting the alternative property.
|
||
.SS COMPILE_OPTIONS
|
||
.sp
|
||
List of options to pass to the compiler.
|
||
.sp
|
||
This property holds a semicolon\-separated list of options
|
||
given so far to the \fBadd_compile_options()\fP command.
|
||
.sp
|
||
This property is used to initialize the \fBCOMPILE_OPTIONS\fP target
|
||
property when a target is created, which is used by the generators to set
|
||
the options for the compiler.
|
||
.sp
|
||
Contents of \fBCOMPILE_OPTIONS\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. See the \fBcmake\-buildsystem(7)\fP manual
|
||
for more on defining buildsystem properties.
|
||
.SS DEFINITIONS
|
||
.sp
|
||
For CMake 2.4 compatibility only. Use \fBCOMPILE_DEFINITIONS\fP
|
||
instead.
|
||
.sp
|
||
This read\-only property specifies the list of flags given so far to
|
||
the \fBadd_definitions()\fP command. It is intended for debugging
|
||
purposes. Use the \fBCOMPILE_DEFINITIONS\fP directory property
|
||
instead.
|
||
.sp
|
||
This built\-in read\-only property does not exist if policy
|
||
\fBCMP0059\fP is set to \fBNEW\fP\&.
|
||
.SS EXCLUDE_FROM_ALL
|
||
.sp
|
||
Set this directory property to a true value on a subdirectory to exclude
|
||
its targets from the “all” target of its ancestors. If excluded, running
|
||
e.g. \fBmake\fP in the parent directory will not build targets the
|
||
subdirectory by default. This does not affect the “all” target of the
|
||
subdirectory itself. Running e.g. \fBmake\fP inside the subdirectory will
|
||
still build its targets.
|
||
.sp
|
||
If the \fBEXCLUDE_FROM_ALL\fP target property is set on a target
|
||
then its value determines whether the target is included in the “all”
|
||
target of this directory and its ancestors.
|
||
.SS IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
|
||
.sp
|
||
Specify \fB#include\fP line transforms for dependencies in a directory.
|
||
.sp
|
||
This property specifies rules to transform macro\-like \fB#include\fP lines
|
||
during implicit dependency scanning of C and C++ source files. The
|
||
list of rules must be semicolon\-separated with each entry of the form
|
||
\fBA_MACRO(%)=value\-with\-%\fP (the \fB%\fP must be literal). During dependency
|
||
scanning occurrences of \fBA_MACRO(...)\fP on \fB#include\fP lines will be
|
||
replaced by the value given with the macro argument substituted for
|
||
\fB%\fP\&. For example, the entry
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
MYDIR(%)=<mydir/%>
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
will convert lines of the form
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
#include MYDIR(myheader.h)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
to
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
#include <mydir/myheader.h>
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
allowing the dependency to be followed.
|
||
.sp
|
||
This property applies to sources in all targets within a directory.
|
||
The property value is initialized in each directory by its value in
|
||
the directory’s parent.
|
||
.SS INCLUDE_DIRECTORIES
|
||
.sp
|
||
List of preprocessor include file search directories.
|
||
.sp
|
||
This property specifies the list of directories given so far to the
|
||
\fBinclude_directories()\fP command.
|
||
.sp
|
||
This property is used to populate the \fBINCLUDE_DIRECTORIES\fP
|
||
target property, which is used by the generators to set the include
|
||
directories for the compiler.
|
||
.sp
|
||
In addition to accepting values from that command, values may be set
|
||
directly on any directory using the \fBset_property()\fP command, and can be
|
||
set on the current directory using the \fBset_directory_properties()\fP
|
||
command. A directory gets its initial value from its parent directory if it has
|
||
one. The initial value of the \fBINCLUDE_DIRECTORIES\fP target property
|
||
comes from the value of this property. Both directory and target property
|
||
values are adjusted by calls to the \fBinclude_directories()\fP command.
|
||
Calls to \fBset_property()\fP or \fBset_directory_properties()\fP,
|
||
however, will update the directory property value without updating target
|
||
property values. Therefore direct property updates must be made before
|
||
calls to \fBadd_executable()\fP or \fBadd_library()\fP for targets
|
||
they are meant to affect.
|
||
.sp
|
||
The target property values are used by the generators to set the
|
||
include paths for the compiler.
|
||
.sp
|
||
Contents of \fBINCLUDE_DIRECTORIES\fP may use “generator expressions” with
|
||
the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.SS INCLUDE_REGULAR_EXPRESSION
|
||
.sp
|
||
Include file scanning regular expression.
|
||
.sp
|
||
This property specifies the regular expression used during
|
||
dependency scanning to match include files that should be followed.
|
||
See the \fBinclude_regular_expression()\fP command for a high\-level
|
||
interface to set this property.
|
||
.SS INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
|
||
.sp
|
||
Per\-configuration interprocedural optimization for a directory.
|
||
.sp
|
||
This is a per\-configuration version of \fBINTERPROCEDURAL_OPTIMIZATION\fP\&.
|
||
If set, this property overrides the generic property for the named
|
||
configuration.
|
||
.SS INTERPROCEDURAL_OPTIMIZATION
|
||
.sp
|
||
Enable interprocedural optimization for targets in a directory.
|
||
.sp
|
||
If set to true, enables interprocedural optimizations if they are
|
||
known to be supported by the compiler.
|
||
.SS LABELS
|
||
.sp
|
||
Specify a list of text labels associated with a directory and all of its
|
||
subdirectories. This is equivalent to setting the \fBLABELS\fP target
|
||
property and the \fBLABELS\fP test property on all targets and tests in
|
||
the current directory and subdirectories. Note: Launchers must enabled to
|
||
propagate labels to targets.
|
||
.sp
|
||
The \fBCMAKE_DIRECTORY_LABELS\fP variable can be used to initialize this
|
||
property.
|
||
.sp
|
||
The list is reported in dashboard submissions.
|
||
.SS LINK_DIRECTORIES
|
||
.sp
|
||
List of linker search directories.
|
||
.sp
|
||
This property holds a semicolon\-separated list of directories
|
||
and is typically populated using the \fBlink_directories()\fP command.
|
||
It gets its initial value from its parent directory, if it has one.
|
||
.sp
|
||
The directory property is used to initialize the \fBLINK_DIRECTORIES\fP
|
||
target property when a target is created. That target property is used
|
||
by the generators to set the library search directories for the linker.
|
||
.sp
|
||
Contents of \fBLINK_DIRECTORIES\fP may use “generator expressions” with
|
||
the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.SS LINK_OPTIONS
|
||
.sp
|
||
List of options to use for the link step of shared library, module
|
||
and executable targets as well as the device link step.
|
||
.sp
|
||
This property holds a semicolon\-separated list of options
|
||
given so far to the \fBadd_link_options()\fP command.
|
||
.sp
|
||
This property is used to initialize the \fBLINK_OPTIONS\fP target
|
||
property when a target is created, which is used by the generators to set
|
||
the options for the compiler.
|
||
.sp
|
||
Contents of \fBLINK_OPTIONS\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. See the \fBcmake\-buildsystem(7)\fP manual
|
||
for more on defining buildsystem properties.
|
||
.SS LISTFILE_STACK
|
||
.sp
|
||
The current stack of listfiles being processed.
|
||
.sp
|
||
This property is mainly useful when trying to debug errors in your
|
||
CMake scripts. It returns a list of what list files are currently
|
||
being processed, in order. So if one listfile does an
|
||
\fBinclude()\fP command then that is effectively pushing the
|
||
included listfile onto the stack.
|
||
.SS MACROS
|
||
.sp
|
||
List of macro commands available in the current directory.
|
||
.sp
|
||
This read\-only property specifies the list of CMake macros currently
|
||
defined. It is intended for debugging purposes. See the \fBmacro()\fP
|
||
command.
|
||
.SS PARENT_DIRECTORY
|
||
.sp
|
||
Source directory that added current subdirectory.
|
||
.sp
|
||
This read\-only property specifies the source directory that added the
|
||
current source directory as a subdirectory of the build. In the
|
||
top\-level directory the value is the empty\-string.
|
||
.SS RULE_LAUNCH_COMPILE
|
||
.sp
|
||
Specify a launcher for compile rules.
|
||
.sp
|
||
See the global property of the same name for details. This overrides
|
||
the global property for a directory.
|
||
.SS RULE_LAUNCH_CUSTOM
|
||
.sp
|
||
Specify a launcher for custom rules.
|
||
.sp
|
||
See the global property of the same name for details. This overrides
|
||
the global property for a directory.
|
||
.SS RULE_LAUNCH_LINK
|
||
.sp
|
||
Specify a launcher for link rules.
|
||
.sp
|
||
See the global property of the same name for details. This overrides
|
||
the global property for a directory.
|
||
.SS SOURCE_DIR
|
||
.sp
|
||
This read\-only directory property reports absolute path to the source
|
||
directory on which it is read.
|
||
.SS SUBDIRECTORIES
|
||
.sp
|
||
This read\-only directory property contains a
|
||
semicolon\-separated list of subdirectories processed so far by
|
||
the \fBadd_subdirectory()\fP or \fBsubdirs()\fP commands. Each entry is
|
||
the absolute path to the source directory (containing the \fBCMakeLists.txt\fP
|
||
file). This is suitable to pass to the \fBget_property()\fP command
|
||
\fBDIRECTORY\fP option.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
The \fBsubdirs()\fP command does not process its arguments until
|
||
after the calling directory is fully processed. Therefore looking
|
||
up this property in the current directory will not see them.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS TESTS
|
||
.sp
|
||
List of tests.
|
||
.sp
|
||
This read\-only property holds a
|
||
semicolon\-separated list of tests
|
||
defined so far, in the current directory, by the \fBadd_test()\fP command.
|
||
.SS TEST_INCLUDE_FILES
|
||
.sp
|
||
A list of cmake files that will be included when ctest is run.
|
||
.sp
|
||
If you specify \fBTEST_INCLUDE_FILES\fP, those files will be included and
|
||
processed when ctest is run on the directory.
|
||
.SS VARIABLES
|
||
.sp
|
||
List of variables defined in the current directory.
|
||
.sp
|
||
This read\-only property specifies the list of CMake variables
|
||
currently defined. It is intended for debugging purposes.
|
||
.SS VS_GLOBAL_SECTION_POST_<section>
|
||
.sp
|
||
Specify a postSolution global section in Visual Studio.
|
||
.sp
|
||
Setting a property like this generates an entry of the following form
|
||
in the solution file:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
GlobalSection(<section>) = postSolution
|
||
<contents based on property value>
|
||
EndGlobalSection
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
The property must be set to a semicolon\-separated list of \fBkey=value\fP
|
||
pairs. Each such pair will be transformed into an entry in the
|
||
solution global section. Whitespace around key and value is ignored.
|
||
List elements which do not contain an equal sign are skipped.
|
||
.sp
|
||
This property only works for Visual Studio 9 and above; it is ignored
|
||
on other generators. The property only applies when set on a
|
||
directory whose \fBCMakeLists.txt\fP contains a \fBproject()\fP command.
|
||
.sp
|
||
Note that CMake generates postSolution sections \fBExtensibilityGlobals\fP
|
||
and \fBExtensibilityAddIns\fP by default. If you set the corresponding
|
||
property, it will override the default section. For example, setting
|
||
\fBVS_GLOBAL_SECTION_POST_ExtensibilityGlobals\fP will override the default
|
||
contents of the \fBExtensibilityGlobals\fP section, while keeping
|
||
ExtensibilityAddIns on its default. However, CMake will always
|
||
add a \fBSolutionGuid\fP to the \fBExtensibilityGlobals\fP section
|
||
if it is not specified explicitly.
|
||
.SS VS_GLOBAL_SECTION_PRE_<section>
|
||
.sp
|
||
Specify a preSolution global section in Visual Studio.
|
||
.sp
|
||
Setting a property like this generates an entry of the following form
|
||
in the solution file:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
GlobalSection(<section>) = preSolution
|
||
<contents based on property value>
|
||
EndGlobalSection
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
The property must be set to a semicolon\-separated list of \fBkey=value\fP
|
||
pairs. Each such pair will be transformed into an entry in the
|
||
solution global section. Whitespace around key and value is ignored.
|
||
List elements which do not contain an equal sign are skipped.
|
||
.sp
|
||
This property only works for Visual Studio 9 and above; it is ignored
|
||
on other generators. The property only applies when set on a
|
||
directory whose \fBCMakeLists.txt\fP contains a \fBproject()\fP command.
|
||
.SS VS_STARTUP_PROJECT
|
||
.sp
|
||
Specify the default startup project in a Visual Studio solution.
|
||
.sp
|
||
The Visual Studio Generators create a \fB\&.sln\fP file for each directory
|
||
whose \fBCMakeLists.txt\fP file calls the \fBproject()\fP command. Set this
|
||
property in the same directory as a \fBproject()\fP command call (e.g. in
|
||
the top\-level \fBCMakeLists.txt\fP file) to specify the default startup project
|
||
for the corresponding solution file.
|
||
.sp
|
||
The property must be set to the name of an existing target. This
|
||
will cause that project to be listed first in the generated solution
|
||
file causing Visual Studio to make it the startup project if the
|
||
solution has never been opened before.
|
||
.sp
|
||
If this property is not specified, then the \fBALL_BUILD\fP project
|
||
will be the default.
|
||
.SH PROPERTIES ON TARGETS
|
||
.SS ADDITIONAL_CLEAN_FILES
|
||
.sp
|
||
A ;\-list of files or directories that will be
|
||
removed as a part of the global \fBclean\fP target. It can be used to specify
|
||
files and directories that are generated as part of building the target or
|
||
that are directly associated with the target in some way (e.g. created as a
|
||
result of running the target).
|
||
.sp
|
||
For custom targets, if such files can be captured as outputs or byproducts
|
||
instead, then that should be preferred over adding them to this property.
|
||
If an additional clean file is used by multiple targets or isn’t
|
||
target\-specific, then the \fBADDITIONAL_CLEAN_FILES\fP directory
|
||
property may be the more appropriate property to use.
|
||
.sp
|
||
Relative paths are allowed and are interpreted relative to the
|
||
current binary directory.
|
||
.sp
|
||
Contents of \fBADDITIONAL_CLEAN_FILES\fP may use
|
||
\fBgenerator expressions\fP\&.
|
||
.sp
|
||
This property only works for the \fBNinja\fP and the Makefile
|
||
generators. It is ignored by other generators.
|
||
.SS AIX_EXPORT_ALL_SYMBOLS
|
||
.sp
|
||
On AIX, CMake automatically exports all symbols from shared libraries, and
|
||
from executables with the \fBENABLE_EXPORTS\fP target property set.
|
||
Explicitly disable this boolean property to suppress the behavior and
|
||
export no symbols by default. In this case it is expected that the project
|
||
will use other means to export some symbols.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_AIX_EXPORT_ALL_SYMBOLS\fP variable if it is set
|
||
when a target is created.
|
||
.SS ALIAS_GLOBAL
|
||
.sp
|
||
Read\-only property indicating of whether an ALIAS target
|
||
is globally visible.
|
||
.sp
|
||
The boolean value of this property is \fBTRUE\fP for aliases to
|
||
IMPORTED targets created
|
||
with the \fBGLOBAL\fP options to \fBadd_executable()\fP or
|
||
\fBadd_library()\fP, \fBFALSE\fP otherwise. It is undefined for
|
||
targets built within the project.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
Promoting an IMPORTED target from \fBLOCAL\fP
|
||
to \fBGLOBAL\fP scope by changing the value or \fBIMPORTED_GLOBAL\fP
|
||
target property do not change the scope of local aliases.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS ALIASED_TARGET
|
||
.sp
|
||
Name of target aliased by this target.
|
||
.sp
|
||
If this is an Alias Target, this property contains
|
||
the name of the target aliased.
|
||
.SS ANDROID_ANT_ADDITIONAL_OPTIONS
|
||
.sp
|
||
Set the additional options for Android Ant build system. This is
|
||
a string value containing all command line options for the Ant build.
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS\fP variable if it is
|
||
set when a target is created.
|
||
.SS ANDROID_API
|
||
.sp
|
||
When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
|
||
Edition, this property sets the Android target API version (e.g. \fB15\fP).
|
||
The version number must be a positive decimal integer. This property is
|
||
initialized by the value of the \fBCMAKE_ANDROID_API\fP variable if
|
||
it is set when a target is created.
|
||
.SS ANDROID_API_MIN
|
||
.sp
|
||
Set the Android MIN API version (e.g. \fB9\fP). The version number
|
||
must be a positive decimal integer. This property is initialized by
|
||
the value of the \fBCMAKE_ANDROID_API_MIN\fP variable if it is set
|
||
when a target is created. Native code builds using this API version.
|
||
.SS ANDROID_ARCH
|
||
.sp
|
||
When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
|
||
Edition, this property sets the Android target architecture.
|
||
.sp
|
||
This is a string property that could be set to the one of
|
||
the following values:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBarmv7\-a\fP: “ARMv7\-A (armv7\-a)”
|
||
.IP \(bu 2
|
||
\fBarmv7\-a\-hard\fP: “ARMv7\-A, hard\-float ABI (armv7\-a)”
|
||
.IP \(bu 2
|
||
\fBarm64\-v8a\fP: “ARMv8\-A, 64bit (arm64\-v8a)”
|
||
.IP \(bu 2
|
||
\fBx86\fP: “x86 (x86)”
|
||
.IP \(bu 2
|
||
\fBx86_64\fP: “x86_64 (x86_64)”
|
||
.UNINDENT
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_ARCH\fP variable if it is set
|
||
when a target is created.
|
||
.SS ANDROID_ASSETS_DIRECTORIES
|
||
.sp
|
||
Set the Android assets directories to copy into the main assets
|
||
folder before build. This a string property that contains the
|
||
directory paths separated by semicolon.
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_ASSETS_DIRECTORIES\fP variable if it is set when
|
||
a target is created.
|
||
.SS ANDROID_GUI
|
||
.sp
|
||
When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
|
||
Edition, this property specifies whether to build an executable as an
|
||
application package on Android.
|
||
.sp
|
||
When this property is set to true the executable when built for Android
|
||
will be created as an application package. This property is initialized
|
||
by the value of the \fBCMAKE_ANDROID_GUI\fP variable if it is set
|
||
when a target is created.
|
||
.sp
|
||
Add the \fBAndroidManifest.xml\fP source file explicitly to the
|
||
target \fBadd_executable()\fP command invocation to specify the
|
||
root directory of the application package source.
|
||
.SS ANDROID_JAR_DEPENDENCIES
|
||
.sp
|
||
Set the Android property that specifies JAR dependencies.
|
||
This is a string value property. This property is initialized
|
||
by the value of the \fBCMAKE_ANDROID_JAR_DEPENDENCIES\fP
|
||
variable if it is set when a target is created.
|
||
.SS ANDROID_JAR_DIRECTORIES
|
||
.sp
|
||
Set the Android property that specifies directories to search for
|
||
the JAR libraries.
|
||
.sp
|
||
This a string property that contains the directory paths separated by
|
||
semicolons. This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_JAR_DIRECTORIES\fP variable if it is set when
|
||
a target is created.
|
||
.sp
|
||
Contents of \fBANDROID_JAR_DIRECTORIES\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions.
|
||
.SS ANDROID_JAVA_SOURCE_DIR
|
||
.sp
|
||
Set the Android property that defines the Java source code root directories.
|
||
This a string property that contains the directory paths separated by semicolon.
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_JAVA_SOURCE_DIR\fP variable if it is set
|
||
when a target is created.
|
||
.SS ANDROID_NATIVE_LIB_DEPENDENCIES
|
||
.sp
|
||
Set the Android property that specifies the .so dependencies.
|
||
This is a string property.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES\fP variable if it is set
|
||
when a target is created.
|
||
.sp
|
||
Contents of \fBANDROID_NATIVE_LIB_DEPENDENCIES\fP may use
|
||
“generator expressions” with the syntax \fB$<...>\fP\&. See the
|
||
\fBcmake\-generator\-expressions(7)\fP manual for
|
||
available expressions.
|
||
.SS ANDROID_NATIVE_LIB_DIRECTORIES
|
||
.sp
|
||
Set the Android property that specifies directories to search for the \fB\&.so\fP
|
||
libraries.
|
||
.sp
|
||
This a string property that contains the directory paths separated
|
||
by semicolons.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_NATIVE_LIB_DIRECTORIES\fP variable if it is set when a
|
||
target is created.
|
||
.sp
|
||
Contents of \fBANDROID_NATIVE_LIB_DIRECTORIES\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions.
|
||
.SS ANDROID_PROCESS_MAX
|
||
.sp
|
||
Set the Android property that defines the maximum number of a
|
||
parallel Android NDK compiler processes (e.g. \fB4\fP).
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_PROCESS_MAX\fP variable if it is set
|
||
when a target is created.
|
||
.SS ANDROID_PROGUARD
|
||
.sp
|
||
When this property is set to true that enables the ProGuard tool to shrink,
|
||
optimize, and obfuscate the code by removing unused code and renaming
|
||
classes, fields, and methods with semantically obscure names.
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_PROGUARD\fP variable if it is set
|
||
when a target is created.
|
||
.SS ANDROID_PROGUARD_CONFIG_PATH
|
||
.sp
|
||
Set the Android property that specifies the location of the ProGuard
|
||
config file. Leave empty to use the default one.
|
||
This a string property that contains the path to ProGuard config file.
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_PROGUARD_CONFIG_PATH\fP variable if it is set
|
||
when a target is created.
|
||
.SS ANDROID_SECURE_PROPS_PATH
|
||
.sp
|
||
Set the Android property that states the location of the secure properties file.
|
||
This is a string property that contains the file path.
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_SECURE_PROPS_PATH\fP variable
|
||
if it is set when a target is created.
|
||
.SS ANDROID_SKIP_ANT_STEP
|
||
.sp
|
||
Set the Android property that defines whether or not to skip the Ant build step.
|
||
This is a boolean property initialized by the value of the
|
||
\fBCMAKE_ANDROID_SKIP_ANT_STEP\fP variable if it is set when a target is created.
|
||
.SS ANDROID_STL_TYPE
|
||
.sp
|
||
When Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio
|
||
Edition, this property specifies the type of STL support for the project.
|
||
This is a string property that could set to the one of the following values:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBnone\fP
|
||
No C++ Support
|
||
.TP
|
||
.B \fBsystem\fP
|
||
Minimal C++ without STL
|
||
.TP
|
||
.B \fBgabi++_static\fP
|
||
GAbi++ Static
|
||
.TP
|
||
.B \fBgabi++_shared\fP
|
||
GAbi++ Shared
|
||
.TP
|
||
.B \fBgnustl_static\fP
|
||
GNU libstdc++ Static
|
||
.TP
|
||
.B \fBgnustl_shared\fP
|
||
GNU libstdc++ Shared
|
||
.TP
|
||
.B \fBstlport_static\fP
|
||
STLport Static
|
||
.TP
|
||
.B \fBstlport_shared\fP
|
||
STLport Shared
|
||
.UNINDENT
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_ANDROID_STL_TYPE\fP variable if it is set when a target is
|
||
created.
|
||
.SS ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>
|
||
.sp
|
||
Per\-configuration output directory for
|
||
ARCHIVE target files.
|
||
.sp
|
||
This is a per\-configuration version of the
|
||
\fBARCHIVE_OUTPUT_DIRECTORY\fP target property, but
|
||
multi\-configuration generators (VS, Xcode) do NOT append a
|
||
per\-configuration subdirectory to the specified directory. This
|
||
property is initialized by the value of the
|
||
\fBCMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>\fP variable if
|
||
it is set when a target is created.
|
||
.sp
|
||
Contents of \fBARCHIVE_OUTPUT_DIRECTORY_<CONFIG>\fP may use
|
||
\fBgenerator expressions\fP\&.
|
||
.SS ARCHIVE_OUTPUT_DIRECTORY
|
||
.sp
|
||
Output directory in which to build ARCHIVE target files.
|
||
.sp
|
||
This property specifies the directory into which archive target files
|
||
should be built. The property value may use
|
||
\fBgenerator expressions\fP\&.
|
||
Multi\-configuration generators (VS, Xcode) append a per\-configuration
|
||
subdirectory to the specified directory unless a generator expression
|
||
is used.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
CMAKE_ARCHIVE_OUTPUT_DIRECTORY if it is set when a target is created.
|
||
.sp
|
||
See also the \fBARCHIVE_OUTPUT_DIRECTORY_<CONFIG>\fP target property.
|
||
.SS ARCHIVE_OUTPUT_NAME_<CONFIG>
|
||
.sp
|
||
Per\-configuration output name for
|
||
ARCHIVE target files.
|
||
.sp
|
||
This is the configuration\-specific version of the
|
||
\fBARCHIVE_OUTPUT_NAME\fP target property.
|
||
.SS ARCHIVE_OUTPUT_NAME
|
||
.sp
|
||
Output name for ARCHIVE target files.
|
||
.sp
|
||
This property specifies the base name for archive target files. It
|
||
overrides \fBOUTPUT_NAME\fP and \fBOUTPUT_NAME_<CONFIG>\fP
|
||
properties.
|
||
.sp
|
||
See also the \fBARCHIVE_OUTPUT_NAME_<CONFIG>\fP target property.
|
||
.SS AUTOGEN_BUILD_DIR
|
||
.sp
|
||
Directory where \fBAUTOMOC\fP, \fBAUTOUIC\fP and \fBAUTORCC\fP
|
||
generate files for the target.
|
||
.sp
|
||
The directory is created on demand and automatically added to the
|
||
\fBADDITIONAL_CLEAN_FILES\fP target property.
|
||
.sp
|
||
When unset or empty the directory \fB<dir>/<target\-name>_autogen\fP is used where
|
||
\fB<dir>\fP is \fBCMAKE_CURRENT_BINARY_DIR\fP and \fB<target\-name>\fP
|
||
is \fBNAME\fP\&.
|
||
.sp
|
||
By default \fI\%AUTOGEN_BUILD_DIR\fP is unset.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTOGEN_ORIGIN_DEPENDS
|
||
.sp
|
||
Switch for forwarding origin target dependencies to the corresponding
|
||
\fB_autogen\fP target.
|
||
.sp
|
||
Targets which have their \fBAUTOMOC\fP or \fBAUTOUIC\fP property
|
||
\fBON\fP have a corresponding \fB_autogen\fP target which generates
|
||
\fBmoc\fP and \fBuic\fP files. As this \fB_autogen\fP target is created at
|
||
generate\-time, it is not possible to define dependencies of it using
|
||
e.g. \fBadd_dependencies()\fP\&. Instead the
|
||
\fI\%AUTOGEN_ORIGIN_DEPENDS\fP target property decides whether the origin
|
||
target dependencies should be forwarded to the \fB_autogen\fP target or not.
|
||
.sp
|
||
By default \fI\%AUTOGEN_ORIGIN_DEPENDS\fP is initialized from
|
||
\fBCMAKE_AUTOGEN_ORIGIN_DEPENDS\fP which is \fBON\fP by default.
|
||
.sp
|
||
In total the dependencies of the \fB_autogen\fP target are composed from
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
forwarded origin target dependencies
|
||
(enabled by default via \fI\%AUTOGEN_ORIGIN_DEPENDS\fP)
|
||
.IP \(bu 2
|
||
additional user defined dependencies from \fBAUTOGEN_TARGET_DEPENDS\fP
|
||
.UNINDENT
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS Note
|
||
.sp
|
||
Disabling \fI\%AUTOGEN_ORIGIN_DEPENDS\fP is useful to avoid building of
|
||
origin target dependencies when building the \fB_autogen\fP target only.
|
||
This is especially interesting when a
|
||
\fBglobal autogen target\fP is enabled.
|
||
.sp
|
||
When the \fB_autogen\fP target doesn’t require all the origin target’s
|
||
dependencies, and \fI\%AUTOGEN_ORIGIN_DEPENDS\fP is disabled, it might be
|
||
necessary to extend \fBAUTOGEN_TARGET_DEPENDS\fP to add missing
|
||
dependencies.
|
||
.SS AUTOGEN_PARALLEL
|
||
.sp
|
||
Number of parallel \fBmoc\fP or \fBuic\fP processes to start when using
|
||
\fBAUTOMOC\fP and \fBAUTOUIC\fP\&.
|
||
.sp
|
||
The custom \fB<origin>_autogen\fP target starts a number of threads of which
|
||
each one parses a source file and on demand starts a \fBmoc\fP or \fBuic\fP
|
||
process. \fBAUTOGEN_PARALLEL\fP controls how many parallel threads
|
||
(and therefore \fBmoc\fP or \fBuic\fP processes) are started.
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
An empty (or unset) value or the string \fBAUTO\fP sets the number of
|
||
threads/processes to the number of physical CPUs on the host system.
|
||
.IP \(bu 2
|
||
A positive non zero integer value sets the exact thread/process count.
|
||
.IP \(bu 2
|
||
Otherwise a single thread/process is started.
|
||
.UNINDENT
|
||
.sp
|
||
By default \fBAUTOGEN_PARALLEL\fP is initialized from
|
||
\fBCMAKE_AUTOGEN_PARALLEL\fP\&.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTOGEN_TARGET_DEPENDS
|
||
.sp
|
||
Additional target dependencies of the corresponding \fB_autogen\fP target.
|
||
.sp
|
||
Targets which have their \fBAUTOMOC\fP or \fBAUTOUIC\fP property
|
||
\fBON\fP have a corresponding \fB_autogen\fP target which generates
|
||
\fBmoc\fP and \fBuic\fP files. As this \fB_autogen\fP target is created at
|
||
generate\-time, it is not possible to define dependencies of it using
|
||
e.g. \fBadd_dependencies()\fP\&. Instead the
|
||
\fI\%AUTOGEN_TARGET_DEPENDS\fP target property can be set to a
|
||
;\-list of additional dependencies for the
|
||
\fB_autogen\fP target. Dependencies can be target names or file names.
|
||
.sp
|
||
In total the dependencies of the \fB_autogen\fP target are composed from
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
forwarded origin target dependencies
|
||
(enabled by default via \fBAUTOGEN_ORIGIN_DEPENDS\fP)
|
||
.IP \(bu 2
|
||
additional user defined dependencies from \fI\%AUTOGEN_TARGET_DEPENDS\fP
|
||
.UNINDENT
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS Use cases
|
||
.sp
|
||
If \fBAUTOMOC\fP or \fBAUTOUIC\fP depends on a file that is either
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
a \fBGENERATED\fP non C++ file (e.g. a \fBGENERATED\fP \fB\&.json\fP
|
||
or \fB\&.ui\fP file) or
|
||
.IP \(bu 2
|
||
a \fBGENERATED\fP C++ file that isn’t recognized by \fBAUTOMOC\fP
|
||
and \fBAUTOUIC\fP because it’s skipped by \fBSKIP_AUTOMOC\fP,
|
||
\fBSKIP_AUTOUIC\fP, \fBSKIP_AUTOGEN\fP or \fBCMP0071\fP or
|
||
.IP \(bu 2
|
||
a file that isn’t in the origin target’s sources
|
||
.UNINDENT
|
||
.sp
|
||
it must be added to \fI\%AUTOGEN_TARGET_DEPENDS\fP\&.
|
||
.SS AUTOMOC
|
||
.sp
|
||
Should the target be processed with auto\-moc (for Qt projects).
|
||
.sp
|
||
\fI\%AUTOMOC\fP is a boolean specifying whether CMake will handle the Qt
|
||
\fBmoc\fP preprocessor automatically, i.e. without having to use the
|
||
\fBQT4_WRAP_CPP()\fP or \fBQT5_WRAP_CPP()\fP macro.
|
||
Currently Qt4 and Qt5 are supported.
|
||
.sp
|
||
This property is initialized by the value of the \fBCMAKE_AUTOMOC\fP
|
||
variable if it is set when a target is created.
|
||
.sp
|
||
When this property is set \fBON\fP, CMake will scan the header and
|
||
source files at build time and invoke \fBmoc\fP accordingly.
|
||
.SS Header file processing
|
||
.sp
|
||
At configuration time, a list of header files that should be scanned by
|
||
\fI\%AUTOMOC\fP is computed from the target’s sources.
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
All header files in the target’s sources are added to the scan list.
|
||
.IP \(bu 2
|
||
For all C++ source files \fB<source_base>.<source_extension>\fP in the
|
||
target’s sources, CMake searches for
|
||
.INDENT 2.0
|
||
.IP \(bu 2
|
||
a regular header with the same base name
|
||
(\fB<source_base>.<header_extention>\fP) and
|
||
.IP \(bu 2
|
||
a private header with the same base name and a \fB_p\fP suffix
|
||
(\fB<source_base>_p.<header_extention>\fP)
|
||
.UNINDENT
|
||
.sp
|
||
and adds these to the scan list.
|
||
.UNINDENT
|
||
.sp
|
||
At build time, CMake scans each unknown or modified header file from the
|
||
list and searches for
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
a Qt macro from \fBAUTOMOC_MACRO_NAMES\fP,
|
||
.IP \(bu 2
|
||
additional file dependencies from the \fBFILE\fP argument of a
|
||
\fBQ_PLUGIN_METADATA\fP macro and
|
||
.IP \(bu 2
|
||
additional file dependencies detected by filters defined in
|
||
\fBAUTOMOC_DEPEND_FILTERS\fP\&.
|
||
.UNINDENT
|
||
.sp
|
||
If a Qt macro is found, then the header will be compiled by the \fBmoc\fP to the
|
||
output file \fBmoc_<base_name>.cpp\fP\&. The complete output file path is
|
||
described in the section \fI\%Output file location\fP\&.
|
||
.sp
|
||
The header will be \fBmoc\fP compiled again if a file from the additional file
|
||
dependencies changes.
|
||
.sp
|
||
Header \fBmoc\fP output files \fBmoc_<base_name>.cpp\fP can be included in source
|
||
files. In the section \fI\%Including header moc files in sources\fP there is more
|
||
information on that topic.
|
||
.SS Source file processing
|
||
.sp
|
||
At build time, CMake scans each unknown or modified C++ source file from the
|
||
target’s sources for
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
a Qt macro from \fBAUTOMOC_MACRO_NAMES\fP,
|
||
.IP \(bu 2
|
||
includes of header \fBmoc\fP files
|
||
(see \fI\%Including header moc files in sources\fP),
|
||
.IP \(bu 2
|
||
additional file dependencies from the \fBFILE\fP argument of a
|
||
\fBQ_PLUGIN_METADATA\fP macro and
|
||
.IP \(bu 2
|
||
additional file dependencies detected by filters defined in
|
||
\fBAUTOMOC_DEPEND_FILTERS\fP\&.
|
||
.UNINDENT
|
||
.sp
|
||
If a Qt macro is found, then the C++ source file
|
||
\fB<base>.<source_extension>\fP is expected to as well contain an include
|
||
statement
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
#include <<base>.moc> // or
|
||
#include "<base>.moc"
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
The source file then will be compiled by the \fBmoc\fP to the output file
|
||
\fB<base>.moc\fP\&. A description of the complete output file path is in section
|
||
\fI\%Output file location\fP\&.
|
||
.sp
|
||
The source will be \fBmoc\fP compiled again if a file from the additional file
|
||
dependencies changes.
|
||
.SS Including header moc files in sources
|
||
.sp
|
||
A source file can include the \fBmoc\fP output file of a header
|
||
\fB<header_base>.<header_extension>\fP by using an include statement of
|
||
the form
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
#include <moc_<header_base>.cpp> // or
|
||
#include "moc_<header_base>.cpp"
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
If the \fBmoc\fP output file of a header is included by a source, it will
|
||
be generated in a different location than if it was not included. This is
|
||
described in the section \fI\%Output file location\fP\&.
|
||
.SS Output file location
|
||
.SS Included moc output files
|
||
.sp
|
||
\fBmoc\fP output files that are included by a source file will be generated in
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fB<AUTOGEN_BUILD_DIR>/include\fP
|
||
for single configuration generators or in
|
||
.IP \(bu 2
|
||
\fB<AUTOGEN_BUILD_DIR>/include_<CONFIG>\fP
|
||
for \fBmulti configuration\fP generators.
|
||
.UNINDENT
|
||
.sp
|
||
Where \fB<AUTOGEN_BUILD_DIR>\fP is the value of the target property
|
||
\fBAUTOGEN_BUILD_DIR\fP\&.
|
||
.sp
|
||
The include directory is automatically added to the target’s
|
||
\fBINCLUDE_DIRECTORIES\fP\&.
|
||
.SS Not included moc output files
|
||
.sp
|
||
\fBmoc\fP output files that are not included in a source file will be generated
|
||
in
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fB<AUTOGEN_BUILD_DIR>/<SOURCE_DIR_CHECKSUM>\fP
|
||
for single configuration generators or in,
|
||
.IP \(bu 2
|
||
\fB<AUTOGEN_BUILD_DIR>/include_<CONFIG>/<SOURCE_DIR_CHECKSUM>\fP
|
||
for \fBmulti configuration\fP generators.
|
||
.UNINDENT
|
||
.sp
|
||
Where \fB<SOURCE_DIR_CHECKSUM>\fP is a checksum computed from the relative
|
||
parent directory path of the \fBmoc\fP input file. This scheme allows to have
|
||
\fBmoc\fP input files with the same name in different directories.
|
||
.sp
|
||
All not included \fBmoc\fP output files will be included automatically by the
|
||
CMake generated file
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fB<AUTOGEN_BUILD_DIR>/mocs_compilation.cpp\fP,
|
||
.UNINDENT
|
||
.sp
|
||
which is added to the target’s sources.
|
||
.SS Qt version detection
|
||
.sp
|
||
\fI\%AUTOMOC\fP enabled targets need to know the Qt major and minor
|
||
version they’re working with. The major version usually is provided by the
|
||
\fBINTERFACE_QT_MAJOR_VERSION\fP property of the \fBQt[45]Core\fP library,
|
||
that the target links to. To find the minor version, CMake builds a list of
|
||
available Qt versions from
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBQt5Core_VERSION_MAJOR\fP and \fBQt5Core_VERSION_MINOR\fP variables
|
||
(usually set by \fBfind_package(Qt5...)\fP)
|
||
.IP \(bu 2
|
||
\fBQt5Core_VERSION_MAJOR\fP and \fBQt5Core_VERSION_MINOR\fP directory properties
|
||
.IP \(bu 2
|
||
\fBQT_VERSION_MAJOR\fP and \fBQT_VERSION_MINOR\fP variables
|
||
(usually set by \fBfind_package(Qt4...)\fP)
|
||
.IP \(bu 2
|
||
\fBQT_VERSION_MAJOR\fP and \fBQT_VERSION_MINOR\fP directory properties
|
||
.UNINDENT
|
||
.sp
|
||
in the context of the \fBadd_executable()\fP or \fBadd_library()\fP call.
|
||
.sp
|
||
Assumed \fBINTERFACE_QT_MAJOR_VERSION\fP is a valid number, the first
|
||
entry in the list with a matching major version is taken. If no matching major
|
||
version was found, an error is generated.
|
||
If \fBINTERFACE_QT_MAJOR_VERSION\fP is not a valid number, the first
|
||
entry in the list is taken.
|
||
.sp
|
||
A \fBfind_package(Qt[45]...)\fP call sets the \fBQT/Qt5Core_VERSION_MAJOR/MINOR\fP
|
||
variables. If the call is in a different context than the
|
||
\fBadd_executable()\fP or \fBadd_library()\fP call, e.g. in a function,
|
||
then the version variables might not be available to the \fI\%AUTOMOC\fP
|
||
enabled target.
|
||
In that case the version variables can be forwarded from the
|
||
\fBfind_package(Qt[45]...)\fP calling context to the \fBadd_executable()\fP
|
||
or \fBadd_library()\fP calling context as directory properties.
|
||
The following Qt5 example demonstrates the procedure.
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
function (add_qt5_client)
|
||
find_package(Qt5 REQUIRED QUIET COMPONENTS Core Widgets)
|
||
...
|
||
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||
PROPERTY Qt5Core_VERSION_MAJOR "${Qt5Core_VERSION_MAJOR}")
|
||
set_property(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
||
PROPERTY Qt5Core_VERSION_MINOR "${Qt5Core_VERSION_MAJOR}")
|
||
...
|
||
endfunction ()
|
||
\&...
|
||
add_qt5_client()
|
||
add_executable(myTarget main.cpp)
|
||
target_link_libraries(myTarget Qt5::QtWidgets)
|
||
set_property(TARGET myTarget PROPERTY AUTOMOC ON)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS Modifiers
|
||
.sp
|
||
\fBAUTOMOC_EXECUTABLE\fP:
|
||
The \fBmoc\fP executable will be detected automatically, but can be forced to
|
||
a certain binary using this target property.
|
||
.sp
|
||
\fBAUTOMOC_MOC_OPTIONS\fP:
|
||
Additional command line options for \fBmoc\fP can be set in this target property.
|
||
.sp
|
||
\fBAUTOMOC_MACRO_NAMES\fP:
|
||
This list of Qt macro names can be extended to search for additional macros in
|
||
headers and sources.
|
||
.sp
|
||
\fBAUTOMOC_DEPEND_FILTERS\fP:
|
||
\fBmoc\fP dependency file names can be extracted from headers or sources by
|
||
defining file name filters in this target property.
|
||
.sp
|
||
\fBAUTOMOC_COMPILER_PREDEFINES\fP:
|
||
Compiler pre definitions for \fBmoc\fP are written to the \fBmoc_predefs.h\fP file.
|
||
The generation of this file can be enabled or disabled in this target property.
|
||
.sp
|
||
\fBSKIP_AUTOMOC\fP:
|
||
Sources and headers can be excluded from \fI\%AUTOMOC\fP processing by
|
||
setting this source file property.
|
||
.sp
|
||
\fBSKIP_AUTOGEN\fP:
|
||
Source files can be excluded from \fI\%AUTOMOC\fP,
|
||
\fBAUTOUIC\fP and \fBAUTORCC\fP processing by
|
||
setting this source file property.
|
||
.sp
|
||
\fBAUTOGEN_SOURCE_GROUP\fP:
|
||
This global property can be used to group files generated by
|
||
\fI\%AUTOMOC\fP or \fBAUTORCC\fP together in an IDE, e.g. in MSVS.
|
||
.sp
|
||
\fBAUTOGEN_TARGETS_FOLDER\fP:
|
||
This global property can be used to group \fI\%AUTOMOC\fP,
|
||
\fBAUTOUIC\fP and \fBAUTORCC\fP targets together in an IDE,
|
||
e.g. in MSVS.
|
||
.sp
|
||
\fBCMAKE_GLOBAL_AUTOGEN_TARGET\fP:
|
||
A global \fBautogen\fP target, that depends on all \fI\%AUTOMOC\fP or
|
||
\fBAUTOUIC\fP generated \fB<ORIGIN>_autogen\fP targets in the project,
|
||
will be generated when this variable is \fBON\fP\&.
|
||
.sp
|
||
\fBAUTOGEN_PARALLEL\fP:
|
||
This target property controls the number of \fBmoc\fP or \fBuic\fP processes to
|
||
start in parallel during builds.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTOMOC_COMPILER_PREDEFINES
|
||
.sp
|
||
Boolean value used by \fBAUTOMOC\fP to determine if the
|
||
compiler pre definitions file \fBmoc_predefs.h\fP should be generated.
|
||
.sp
|
||
CMake generates a \fBmoc_predefs.h\fP file with compiler pre definitions
|
||
from the output of the command defined in
|
||
\fBCMAKE_CXX_COMPILER_PREDEFINES_COMMAND\fP
|
||
when
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBAUTOMOC\fP is enabled,
|
||
.IP \(bu 2
|
||
\fI\%AUTOMOC_COMPILER_PREDEFINES\fP is enabled,
|
||
.IP \(bu 2
|
||
\fBCMAKE_CXX_COMPILER_PREDEFINES_COMMAND\fP isn’t empty and
|
||
.IP \(bu 2
|
||
the Qt version is greater or equal 5.8.
|
||
.UNINDENT
|
||
.sp
|
||
The \fBmoc_predefs.h\fP file, which is generated in \fBAUTOGEN_BUILD_DIR\fP,
|
||
is passed to \fBmoc\fP as the argument to the \fB\-\-include\fP option.
|
||
.sp
|
||
By default \fI\%AUTOMOC_COMPILER_PREDEFINES\fP is initialized from
|
||
\fBCMAKE_AUTOMOC_COMPILER_PREDEFINES\fP, which is ON by default.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTOMOC_DEPEND_FILTERS
|
||
.sp
|
||
Filter definitions used by \fBAUTOMOC\fP to extract file names from a
|
||
source file that are registered as additional dependencies for the
|
||
\fBmoc\fP file of the source file.
|
||
.sp
|
||
Filters are defined as \fBKEYWORD;REGULAR_EXPRESSION\fP pairs. First the file
|
||
content is searched for \fBKEYWORD\fP\&. If it is found at least once, then file
|
||
names are extracted by successively searching for \fBREGULAR_EXPRESSION\fP and
|
||
taking the first match group.
|
||
.sp
|
||
The file name found in the first match group is searched for
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
first in the vicinity of the source file
|
||
.IP \(bu 2
|
||
and afterwards in the target’s \fBINCLUDE_DIRECTORIES\fP\&.
|
||
.UNINDENT
|
||
.sp
|
||
If any of the extracted files changes, then the \fBmoc\fP file for the source
|
||
file gets rebuilt even when the source file itself doesn’t change.
|
||
.sp
|
||
If any of the extracted files is \fBGENERATED\fP or if it is not in the
|
||
target’s sources, then it might be necessary to add it to the
|
||
\fB_autogen\fP target dependencies.
|
||
See \fBAUTOGEN_TARGET_DEPENDS\fP for reference.
|
||
.sp
|
||
By default \fI\%AUTOMOC_DEPEND_FILTERS\fP is initialized from
|
||
\fBCMAKE_AUTOMOC_DEPEND_FILTERS\fP, which is empty by default.
|
||
.sp
|
||
From Qt 5.15.0 on this variable is ignored as moc is able to output the correct
|
||
dependencies.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS Example 1
|
||
.sp
|
||
A header file \fBmy_class.hpp\fP uses a custom macro \fBJSON_FILE_MACRO\fP which
|
||
is defined in an other header \fBmacros.hpp\fP\&.
|
||
We want the \fBmoc\fP file of \fBmy_class.hpp\fP to depend on the file name
|
||
argument of \fBJSON_FILE_MACRO\fP:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
// my_class.hpp
|
||
class My_Class : public QObject
|
||
{
|
||
Q_OBJECT
|
||
JSON_FILE_MACRO ( "info.json" )
|
||
\&...
|
||
};
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
In \fBCMakeLists.txt\fP we add a filter to
|
||
\fBCMAKE_AUTOMOC_DEPEND_FILTERS\fP like this:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
list( APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
|
||
"JSON_FILE_MACRO"
|
||
"[\en][ \et]*JSON_FILE_MACRO[ \et]*\e\e([ \et]*\e"([^\e"]+)\e""
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
We assume \fBinfo.json\fP is a plain (not \fBGENERATED\fP) file that is
|
||
listed in the target’s source. Therefore we do not need to add it to
|
||
\fBAUTOGEN_TARGET_DEPENDS\fP\&.
|
||
.SS Example 2
|
||
.sp
|
||
In the target \fBmy_target\fP a header file \fBcomplex_class.hpp\fP uses a
|
||
custom macro \fBJSON_BASED_CLASS\fP which is defined in an other header
|
||
\fBmacros.hpp\fP:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
// macros.hpp
|
||
\&...
|
||
#define JSON_BASED_CLASS(name, json) \e
|
||
class name : public QObject \e
|
||
{ \e
|
||
Q_OBJECT \e
|
||
Q_PLUGIN_METADATA(IID "demo" FILE json) \e
|
||
name() {} \e
|
||
};
|
||
\&...
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
// complex_class.hpp
|
||
#pragma once
|
||
JSON_BASED_CLASS(Complex_Class, "meta.json")
|
||
// end of file
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Since \fBcomplex_class.hpp\fP doesn’t contain a \fBQ_OBJECT\fP macro it would be
|
||
ignored by \fBAUTOMOC\fP\&. We change this by adding \fBJSON_BASED_CLASS\fP
|
||
to \fBCMAKE_AUTOMOC_MACRO_NAMES\fP:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
list(APPEND CMAKE_AUTOMOC_MACRO_NAMES "JSON_BASED_CLASS")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
We want the \fBmoc\fP file of \fBcomplex_class.hpp\fP to depend on
|
||
\fBmeta.json\fP\&. So we add a filter to
|
||
\fBCMAKE_AUTOMOC_DEPEND_FILTERS\fP:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
list(APPEND CMAKE_AUTOMOC_DEPEND_FILTERS
|
||
"JSON_BASED_CLASS"
|
||
"[\en^][ \et]*JSON_BASED_CLASS[ \et]*\e\e([^,]*,[ \et]*\e"([^\e"]+)\e""
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Additionally we assume \fBmeta.json\fP is \fBGENERATED\fP which is
|
||
why we have to add it to \fBAUTOGEN_TARGET_DEPENDS\fP:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET my_target APPEND PROPERTY AUTOGEN_TARGET_DEPENDS "meta.json")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS AUTOMOC_EXECUTABLE
|
||
.sp
|
||
\fI\%AUTOMOC_EXECUTABLE\fP is file path pointing to the \fBmoc\fP
|
||
executable to use for \fBAUTOMOC\fP enabled files. Setting
|
||
this property will make CMake skip the automatic detection of the
|
||
\fBmoc\fP binary as well as the sanity\-tests normally run to ensure
|
||
that the binary is available and working as expected.
|
||
.sp
|
||
Usually this property does not need to be set. Only consider this
|
||
property if auto\-detection of \fBmoc\fP can not work – e.g. because
|
||
you are building the \fBmoc\fP binary as part of your project.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTOMOC_MACRO_NAMES
|
||
.sp
|
||
A semicolon\-separated list list of macro names used by
|
||
\fBAUTOMOC\fP to determine if a C++ file needs to be processed by \fBmoc\fP\&.
|
||
.sp
|
||
This property is only used if the \fBAUTOMOC\fP property is \fBON\fP
|
||
for this target.
|
||
.sp
|
||
When running \fBAUTOMOC\fP, CMake searches for the strings listed in
|
||
\fI\%AUTOMOC_MACRO_NAMES\fP in C++ source and header files.
|
||
If any of the strings is found
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
as the first non space string on a new line or
|
||
.IP \(bu 2
|
||
as the first non space string after a \fB{\fP on a new line,
|
||
.UNINDENT
|
||
.sp
|
||
then the file will be processed by \fBmoc\fP\&.
|
||
.sp
|
||
By default \fI\%AUTOMOC_MACRO_NAMES\fP is initialized from
|
||
\fBCMAKE_AUTOMOC_MACRO_NAMES\fP\&.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS Example
|
||
.sp
|
||
In this case the \fBQ_OBJECT\fP macro is hidden inside another macro
|
||
called \fBCUSTOM_MACRO\fP\&. To let CMake know that source files that contain
|
||
\fBCUSTOM_MACRO\fP need to be \fBmoc\fP processed, we call:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET tgt APPEND PROPERTY AUTOMOC_MACRO_NAMES "CUSTOM_MACRO")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS AUTOMOC_MOC_OPTIONS
|
||
.sp
|
||
Additional options for \fBmoc\fP when using \fBAUTOMOC\fP
|
||
.sp
|
||
This property is only used if the \fBAUTOMOC\fP property is \fBON\fP
|
||
for this target. In this case, it holds additional command line
|
||
options which will be used when \fBmoc\fP is executed during the build, i.e.
|
||
it is equivalent to the optional \fBOPTIONS\fP argument of the
|
||
\fBqt4_wrap_cpp()\fP macro.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_AUTOMOC_MOC_OPTIONS\fP variable if it is set when a target
|
||
is created, or an empty string otherwise.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTOMOC_PATH_PREFIX
|
||
.sp
|
||
When this property is \fBON\fP, CMake will generate the \fB\-p\fP path prefix
|
||
option for \fBmoc\fP on \fBAUTOMOC\fP enabled Qt targets.
|
||
.sp
|
||
To generate the path prefix, CMake tests if the header compiled by \fBmoc\fP
|
||
is in any of the target
|
||
\fBinclude directories\fP\&. If so, CMake will
|
||
compute the relative path accordingly. If the header is not in the
|
||
\fBinclude directories\fP, CMake will omit
|
||
the \fB\-p\fP path prefix option. \fBmoc\fP usually generates a
|
||
relative include path in that case.
|
||
.sp
|
||
\fI\%AUTOMOC_PATH_PREFIX\fP is initialized from the variable
|
||
\fBCMAKE_AUTOMOC_PATH_PREFIX\fP, which is \fBOFF\fP by default.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS Reproducible builds
|
||
.sp
|
||
For reproducible builds it is recommended to keep headers that are \fBmoc\fP
|
||
compiled in one of the target
|
||
\fBinclude directories\fP and set
|
||
\fI\%AUTOMOC_PATH_PREFIX\fP to \fBON\fP\&. This ensures that:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBmoc\fP output files are identical on different build setups,
|
||
.IP \(bu 2
|
||
\fBmoc\fP output files will compile correctly when the source and/or
|
||
build directory is a symbolic link.
|
||
.UNINDENT
|
||
.SS AUTORCC
|
||
.sp
|
||
Should the target be processed with auto\-rcc (for Qt projects).
|
||
.sp
|
||
\fI\%AUTORCC\fP is a boolean specifying whether CMake will handle
|
||
the Qt \fBrcc\fP code generator automatically, i.e. without having to use
|
||
the \fBQT4_ADD_RESOURCES()\fP or \fBQT5_ADD_RESOURCES()\fP
|
||
macro. Currently Qt4 and Qt5 are supported.
|
||
.sp
|
||
When this property is \fBON\fP, CMake will handle \fB\&.qrc\fP files added
|
||
as target sources at build time and invoke \fBrcc\fP accordingly.
|
||
This property is initialized by the value of the \fBCMAKE_AUTORCC\fP
|
||
variable if it is set when a target is created.
|
||
.sp
|
||
By default \fI\%AUTORCC\fP is processed by a
|
||
\fBcustom command\fP\&.
|
||
If the \fB\&.qrc\fP file is \fBGENERATED\fP, a
|
||
\fBcustom target\fP is used instead.
|
||
.sp
|
||
When there are multiple \fB\&.qrc\fP files with the same name, CMake will
|
||
generate unspecified unique output file names for \fBrcc\fP\&. Therefore, if
|
||
\fBQ_INIT_RESOURCE()\fP or \fBQ_CLEANUP_RESOURCE()\fP need to be used, the
|
||
\fB\&.qrc\fP file name must be unique.
|
||
.SS Modifiers
|
||
.sp
|
||
\fBAUTORCC_EXECUTABLE\fP:
|
||
The \fBrcc\fP executable will be detected automatically, but can be forced to
|
||
a certain binary by setting this target property.
|
||
.sp
|
||
\fBAUTORCC_OPTIONS\fP:
|
||
Additional command line options for \fBrcc\fP can be set via this target
|
||
property. The corresponding \fBAUTORCC_OPTIONS\fP source file property
|
||
can be used to specify options to be applied only to a specific \fB\&.qrc\fP file.
|
||
.sp
|
||
\fBSKIP_AUTORCC\fP:
|
||
\fB\&.qrc\fP files can be excluded from \fI\%AUTORCC\fP processing by
|
||
setting this source file property.
|
||
.sp
|
||
\fBSKIP_AUTOGEN\fP:
|
||
Source files can be excluded from \fBAUTOMOC\fP,
|
||
\fBAUTOUIC\fP and \fI\%AUTORCC\fP processing by
|
||
setting this source file property.
|
||
.sp
|
||
\fBAUTOGEN_SOURCE_GROUP\fP:
|
||
This global property can be used to group files generated by
|
||
\fBAUTOMOC\fP or \fI\%AUTORCC\fP together in an IDE, e.g. in MSVS.
|
||
.sp
|
||
\fBAUTOGEN_TARGETS_FOLDER\fP:
|
||
This global property can be used to group \fBAUTOMOC\fP,
|
||
\fBAUTOUIC\fP and \fI\%AUTORCC\fP targets together in an IDE,
|
||
e.g. in MSVS.
|
||
.sp
|
||
\fBCMAKE_GLOBAL_AUTORCC_TARGET\fP:
|
||
A global \fBautorcc\fP target that depends on all \fI\%AUTORCC\fP targets
|
||
in the project will be generated when this variable is \fBON\fP\&.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTORCC_EXECUTABLE
|
||
.sp
|
||
\fI\%AUTORCC_EXECUTABLE\fP is file path pointing to the \fBrcc\fP
|
||
executable to use for \fBAUTORCC\fP enabled files. Setting
|
||
this property will make CMake skip the automatic detection of the
|
||
\fBrcc\fP binary as well as the sanity\-tests normally run to ensure
|
||
that the binary is available and working as expected.
|
||
.sp
|
||
Usually this property does not need to be set. Only consider this
|
||
property if auto\-detection of \fBrcc\fP can not work – e.g. because
|
||
you are building the \fBrcc\fP binary as part of your project.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTORCC_OPTIONS
|
||
.sp
|
||
Additional options for \fBrcc\fP when using \fBAUTORCC\fP
|
||
.sp
|
||
This property holds additional command line options which will be used
|
||
when \fBrcc\fP is executed during the build via \fBAUTORCC\fP,
|
||
i.e. it is equivalent to the optional \fBOPTIONS\fP argument of the
|
||
\fBqt4_add_resources()\fP macro.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_AUTORCC_OPTIONS\fP variable if it is set when a target is
|
||
created, or an empty string otherwise.
|
||
.sp
|
||
The options set on the target may be overridden by \fBAUTORCC_OPTIONS\fP
|
||
set on the \fB\&.qrc\fP source file.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS EXAMPLE
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# ...
|
||
set_property(TARGET tgt PROPERTY AUTORCC_OPTIONS "\-\-compress;9")
|
||
# ...
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS AUTOUIC
|
||
.sp
|
||
Should the target be processed with auto\-uic (for Qt projects).
|
||
.sp
|
||
\fI\%AUTOUIC\fP is a boolean specifying whether CMake will handle
|
||
the Qt \fBuic\fP code generator automatically, i.e. without having to use
|
||
the \fBQT4_WRAP_UI()\fP or \fBQT5_WRAP_UI()\fP macro. Currently
|
||
Qt4 and Qt5 are supported.
|
||
.sp
|
||
This property is initialized by the value of the \fBCMAKE_AUTOUIC\fP
|
||
variable if it is set when a target is created.
|
||
.sp
|
||
When this property is \fBON\fP, CMake will scan the header and source files at
|
||
build time and invoke \fBuic\fP accordingly.
|
||
.SS Header and source file processing
|
||
.sp
|
||
At build time, CMake scans each header and source file from the
|
||
target’s sources for include statements of the form
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
#include "ui_<ui_base>.h"
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Once such an include statement is found in a file, CMake searches for the
|
||
\fBuic\fP input file \fB<ui_base>.ui\fP
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
in the vicinity of the file and
|
||
.IP \(bu 2
|
||
in the \fBAUTOUIC_SEARCH_PATHS\fP of the target.
|
||
.UNINDENT
|
||
.sp
|
||
If the \fB<ui_base>.ui\fP file was found, \fBuic\fP is called on it to generate
|
||
\fBui_<ui_base>.h\fP in the directory
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fB<AUTOGEN_BUILD_DIR>/include\fP for single configuration generators or in
|
||
.IP \(bu 2
|
||
\fB<AUTOGEN_BUILD_DIR>/include_<CONFIG>\fP for
|
||
\fBmulti configuration\fP generators.
|
||
.UNINDENT
|
||
.sp
|
||
Where \fB<AUTOGEN_BUILD_DIR>\fP is the value of the target property
|
||
\fBAUTOGEN_BUILD_DIR\fP\&.
|
||
.sp
|
||
The include directory is automatically added to the target’s
|
||
\fBINCLUDE_DIRECTORIES\fP\&.
|
||
.SS Modifiers
|
||
.sp
|
||
\fBAUTOUIC_EXECUTABLE\fP:
|
||
The \fBuic\fP executable will be detected automatically, but can be forced to
|
||
a certain binary using this target property.
|
||
.sp
|
||
\fBAUTOUIC_OPTIONS\fP:
|
||
Additional command line options for \fBuic\fP can be set via this target
|
||
property. The corresponding \fBAUTOUIC_OPTIONS\fP source file property
|
||
can be used to specify options to be applied only to a specific
|
||
\fB<base_name>.ui\fP file.
|
||
.sp
|
||
\fBSKIP_AUTOUIC\fP:
|
||
Source files can be excluded from \fI\%AUTOUIC\fP processing by setting
|
||
this source file property.
|
||
.sp
|
||
\fBSKIP_AUTOGEN\fP:
|
||
Source files can be excluded from \fBAUTOMOC\fP,
|
||
\fI\%AUTOUIC\fP and \fBAUTORCC\fP processing by
|
||
setting this source file property.
|
||
.sp
|
||
\fBAUTOGEN_TARGETS_FOLDER\fP:
|
||
This global property can be used to group \fBAUTOMOC\fP,
|
||
\fI\%AUTOUIC\fP and \fBAUTORCC\fP targets together in an IDE,
|
||
e.g. in MSVS.
|
||
.sp
|
||
\fBCMAKE_GLOBAL_AUTOGEN_TARGET\fP:
|
||
A global \fBautogen\fP target, that depends on all \fBAUTOMOC\fP or
|
||
\fI\%AUTOUIC\fP generated \fB<ORIGIN>_autogen\fP targets in the project,
|
||
will be generated when this variable is \fBON\fP\&.
|
||
.sp
|
||
\fBAUTOGEN_PARALLEL\fP:
|
||
This target property controls the number of \fBmoc\fP or \fBuic\fP processes to
|
||
start in parallel during builds.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTOUIC_EXECUTABLE
|
||
.sp
|
||
\fI\%AUTOUIC_EXECUTABLE\fP is file path pointing to the \fBuic\fP
|
||
executable to use for \fBAUTOUIC\fP enabled files. Setting
|
||
this property will make CMake skip the automatic detection of the
|
||
\fBuic\fP binary as well as the sanity\-tests normally run to ensure
|
||
that the binary is available and working as expected.
|
||
.sp
|
||
Usually this property does not need to be set. Only consider this
|
||
property if auto\-detection of \fBuic\fP can not work – e.g. because
|
||
you are building the \fBuic\fP binary as part of your project.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS AUTOUIC_OPTIONS
|
||
.sp
|
||
Additional options for \fBuic\fP when using \fBAUTOUIC\fP
|
||
.sp
|
||
This property holds additional command line options which will be used when
|
||
\fBuic\fP is executed during the build via \fBAUTOUIC\fP, i.e. it is
|
||
equivalent to the optional \fBOPTIONS\fP argument of the
|
||
\fBqt4_wrap_ui()\fP macro.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_AUTOUIC_OPTIONS\fP variable if it is set when a target is
|
||
created, or an empty string otherwise.
|
||
.sp
|
||
The options set on the target may be overridden by \fBAUTOUIC_OPTIONS\fP
|
||
set on the \fB\&.ui\fP source file.
|
||
.sp
|
||
This property may use “generator expressions” with the syntax \fB$<...>\fP\&.
|
||
See the \fBcmake\-generator\-expressions(7)\fP manual for available
|
||
expressions.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS EXAMPLE
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# ...
|
||
set_property(TARGET tgt PROPERTY AUTOUIC_OPTIONS "\-\-no\-protection")
|
||
# ...
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS AUTOUIC_SEARCH_PATHS
|
||
.sp
|
||
Search path list used by \fBAUTOUIC\fP to find included
|
||
\fB\&.ui\fP files.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_AUTOUIC_SEARCH_PATHS\fP variable if it is set
|
||
when a target is created. Otherwise it is empty.
|
||
.sp
|
||
See the \fBcmake\-qt(7)\fP manual for more information on using CMake
|
||
with Qt.
|
||
.SS BINARY_DIR
|
||
.sp
|
||
This read\-only property reports the value of the
|
||
\fBCMAKE_CURRENT_BINARY_DIR\fP variable in the directory in which
|
||
the target was defined.
|
||
.SS BUILD_RPATH
|
||
.sp
|
||
A semicolon\-separated list specifying runtime path (\fBRPATH\fP)
|
||
entries to add to binaries linked in the build tree (for platforms that
|
||
support it). The entries will \fInot\fP be used for binaries in the install
|
||
tree. See also the \fBINSTALL_RPATH\fP target property.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_BUILD_RPATH\fP if it is set when a target is created.
|
||
.sp
|
||
This property supports
|
||
\fBgenerator expressions\fP\&.
|
||
.SS BUILD_RPATH_USE_ORIGIN
|
||
.sp
|
||
Whether to use relative paths for the build \fBRPATH\fP\&.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_BUILD_RPATH_USE_ORIGIN\fP\&.
|
||
.sp
|
||
On platforms that support runtime paths (\fBRPATH\fP) with the
|
||
\fB$ORIGIN\fP token, setting this property to \fBTRUE\fP enables relative
|
||
paths in the build \fBRPATH\fP for executables and shared libraries that
|
||
point to shared libraries in the same build tree.
|
||
.sp
|
||
Normally the build \fBRPATH\fP of a binary contains absolute paths
|
||
to the directory of each shared library it links to. The \fBRPATH\fP
|
||
entries for directories contained within the build tree can be made
|
||
relative to enable relocatable builds and to help achieve reproducible
|
||
builds by omitting the build directory from the build environment.
|
||
.sp
|
||
This property has no effect on platforms that do not support the
|
||
\fB$ORIGIN\fP token in \fBRPATH\fP, or when the \fBCMAKE_SKIP_RPATH\fP
|
||
variable is set. The runtime path set through the
|
||
\fBBUILD_RPATH\fP target property is also unaffected by this
|
||
property.
|
||
.SS BUILD_WITH_INSTALL_NAME_DIR
|
||
.sp
|
||
\fBBUILD_WITH_INSTALL_NAME_DIR\fP is a boolean specifying whether the macOS
|
||
\fBinstall_name\fP of a target in the build tree uses the directory given by
|
||
\fBINSTALL_NAME_DIR\fP\&. This setting only applies to targets on macOS.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_BUILD_WITH_INSTALL_NAME_DIR\fP if it is set when a target is
|
||
created.
|
||
.sp
|
||
If this property is not set and policy \fBCMP0068\fP is not \fBNEW\fP, the
|
||
value of \fBBUILD_WITH_INSTALL_RPATH\fP is used in its place.
|
||
.SS BUILD_WITH_INSTALL_RPATH
|
||
.sp
|
||
\fBBUILD_WITH_INSTALL_RPATH\fP is a boolean specifying whether to link the target
|
||
in the build tree with the \fBINSTALL_RPATH\fP\&. This takes precedence
|
||
over \fBSKIP_BUILD_RPATH\fP and avoids the need for relinking before
|
||
installation.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_BUILD_WITH_INSTALL_RPATH\fP variable if it is set when a target
|
||
is created.
|
||
.sp
|
||
If policy \fBCMP0068\fP is not \fBNEW\fP, this property also controls use of
|
||
\fBINSTALL_NAME_DIR\fP in the build tree on macOS. Either way, the
|
||
\fBBUILD_WITH_INSTALL_NAME_DIR\fP target property takes precedence.
|
||
.SS BUNDLE_EXTENSION
|
||
.sp
|
||
The file extension used to name a \fBBUNDLE\fP, a \fBFRAMEWORK\fP,
|
||
or a \fBMACOSX_BUNDLE\fP target on the macOS and iOS.
|
||
.sp
|
||
The default value is \fBbundle\fP, \fBframework\fP, or \fBapp\fP for the respective
|
||
target types.
|
||
.SS BUNDLE
|
||
.sp
|
||
This target is a \fBCFBundle\fP on the macOS.
|
||
.sp
|
||
If a module library target has this property set to true it will be
|
||
built as a \fBCFBundle\fP when built on the mac. It will have the directory
|
||
structure required for a \fBCFBundle\fP and will be suitable to be used for
|
||
creating Browser Plugins or other application resources.
|
||
.SS C_EXTENSIONS
|
||
.sp
|
||
Boolean specifying whether compiler specific extensions are requested.
|
||
.sp
|
||
This property specifies whether compiler specific extensions should be
|
||
used. For some compilers, this results in adding a flag such
|
||
as \fB\-std=gnu11\fP instead of \fB\-std=c11\fP to the compile line. This
|
||
property is \fBON\fP by default. The basic C standard level is
|
||
controlled by the \fBC_STANDARD\fP target property.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_C_EXTENSIONS\fP variable if it is set when a target
|
||
is created.
|
||
.SS C_STANDARD
|
||
.sp
|
||
The C standard whose features are requested to build this target.
|
||
.sp
|
||
This property specifies the C standard whose features are requested
|
||
to build this target. For some compilers, this results in adding a
|
||
flag such as \fB\-std=gnu11\fP to the compile line. For compilers that
|
||
have no notion of a C standard level, such as all versions of
|
||
MSVC known as of this version of CMake, this has no effect.
|
||
.sp
|
||
Supported values are \fB90\fP, \fB99\fP and \fB11\fP\&.
|
||
.sp
|
||
If the value requested does not result in a compile flag being added for
|
||
the compiler in use, a previous standard flag will be added instead. This
|
||
means that using:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET tgt PROPERTY C_STANDARD 11)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
with a compiler which does not support \fB\-std=gnu11\fP or an equivalent
|
||
flag will not result in an error or warning, but will instead add the
|
||
\fB\-std=gnu99\fP or \fB\-std=gnu90\fP flag if supported. This “decay” behavior may
|
||
be controlled with the \fBC_STANDARD_REQUIRED\fP target property.
|
||
Additionally, the \fBC_EXTENSIONS\fP target property may be used to
|
||
control whether compiler\-specific extensions are enabled on a per\-target basis.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_C_STANDARD\fP variable if it is set when a target
|
||
is created.
|
||
.SS C_STANDARD_REQUIRED
|
||
.sp
|
||
Boolean describing whether the value of \fBC_STANDARD\fP is a requirement.
|
||
.sp
|
||
If this property is set to \fBON\fP, then the value of the
|
||
\fBC_STANDARD\fP target property is treated as a requirement. If this
|
||
property is \fBOFF\fP or unset, the \fBC_STANDARD\fP target property is
|
||
treated as optional and may “decay” to a previous standard if the requested is
|
||
not available. For compilers that have no notion of a standard level, such as
|
||
MSVC, this has no effect.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_C_STANDARD_REQUIRED\fP variable if it is set when a
|
||
target is created.
|
||
.SS COMMON_LANGUAGE_RUNTIME
|
||
.sp
|
||
By setting this target property, the target is configured to build with
|
||
\fBC++/CLI\fP support.
|
||
.sp
|
||
The Visual Studio generator defines the \fBclr\fP parameter depending on
|
||
the value of \fBCOMMON_LANGUAGE_RUNTIME\fP:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
property not set: native C++ (i.e. default)
|
||
.IP \(bu 2
|
||
property set but empty: mixed unmanaged/managed C++
|
||
.IP \(bu 2
|
||
property set to any non empty value: managed C++
|
||
.UNINDENT
|
||
.sp
|
||
Supported values: \fB""\fP, \fB"pure"\fP, \fB"safe"\fP
|
||
.sp
|
||
This property is only evaluated Visual Studio Generators for
|
||
VS 2010 and above.
|
||
.sp
|
||
To be able to build managed C++ targets with VS 2017 and above the component
|
||
\fBC++/CLI support\fP must be installed, which may not be done by default.
|
||
.sp
|
||
See also \fBIMPORTED_COMMON_LANGUAGE_RUNTIME\fP
|
||
.SS COMPATIBLE_INTERFACE_BOOL
|
||
.sp
|
||
Properties which must be compatible with their link interface
|
||
.sp
|
||
The \fBCOMPATIBLE_INTERFACE_BOOL\fP property may contain a list of
|
||
properties for this target which must be consistent when evaluated as a
|
||
boolean with the \fBINTERFACE\fP variant of the property in all linked
|
||
dependees. For example, if a property \fBFOO\fP appears in the list, then
|
||
for each dependee, the \fBINTERFACE_FOO\fP property content in all of its
|
||
dependencies must be consistent with each other, and with the \fBFOO\fP
|
||
property in the depender.
|
||
.sp
|
||
Consistency in this sense has the meaning that if the property is set,
|
||
then it must have the same boolean value as all others, and if the
|
||
property is not set, then it is ignored.
|
||
.sp
|
||
Note that for each dependee, the set of properties specified in this
|
||
property must not intersect with the set specified in any of the other
|
||
Compatible Interface Properties\&.
|
||
.SS COMPATIBLE_INTERFACE_NUMBER_MAX
|
||
.sp
|
||
Properties whose maximum value from the link interface will be used.
|
||
.sp
|
||
The \fBCOMPATIBLE_INTERFACE_NUMBER_MAX\fP property may contain a list of
|
||
properties for this target whose maximum value may be read at generate
|
||
time when evaluated in the \fBINTERFACE\fP variant of the property in all
|
||
linked dependees. For example, if a property \fBFOO\fP appears in the list,
|
||
then for each dependee, the \fBINTERFACE_FOO\fP property content in all of
|
||
its dependencies will be compared with each other and with the \fBFOO\fP
|
||
property in the depender. When reading the \fBFOO\fP property at generate
|
||
time, the maximum value will be returned. If the property is not set,
|
||
then it is ignored.
|
||
.sp
|
||
Note that for each dependee, the set of properties specified in this
|
||
property must not intersect with the set specified in any of the other
|
||
Compatible Interface Properties\&.
|
||
.SS COMPATIBLE_INTERFACE_NUMBER_MIN
|
||
.sp
|
||
Properties whose maximum value from the link interface will be used.
|
||
.sp
|
||
The \fBCOMPATIBLE_INTERFACE_NUMBER_MIN\fP property may contain a list of
|
||
properties for this target whose minimum value may be read at generate
|
||
time when evaluated in the \fBINTERFACE\fP variant of the property of all
|
||
linked dependees. For example, if a
|
||
property \fBFOO\fP appears in the list, then for each dependee, the
|
||
\fBINTERFACE_FOO\fP property content in all of its dependencies will be
|
||
compared with each other and with the \fBFOO\fP property in the depender.
|
||
When reading the \fBFOO\fP property at generate time, the minimum value
|
||
will be returned. If the property is not set, then it is ignored.
|
||
.sp
|
||
Note that for each dependee, the set of properties specified in this
|
||
property must not intersect with the set specified in any of the other
|
||
Compatible Interface Properties\&.
|
||
.SS COMPATIBLE_INTERFACE_STRING
|
||
.sp
|
||
Properties which must be string\-compatible with their link interface
|
||
.sp
|
||
The \fBCOMPATIBLE_INTERFACE_STRING\fP property may contain a list of
|
||
properties for this target which must be the same when evaluated as a
|
||
string in the \fBINTERFACE\fP variant of the property all linked dependees.
|
||
For example, if a property \fBFOO\fP appears in the list, then for each
|
||
dependee, the \fBINTERFACE_FOO\fP property content in all of its
|
||
dependencies must be equal with each other, and with the \fBFOO\fP property
|
||
in the depender. If the property is not set, then it is ignored.
|
||
.sp
|
||
Note that for each dependee, the set of properties specified in this
|
||
property must not intersect with the set specified in any of the other
|
||
Compatible Interface Properties\&.
|
||
.SS COMPILE_DEFINITIONS
|
||
.sp
|
||
Preprocessor definitions for compiling a target’s sources.
|
||
.sp
|
||
The \fBCOMPILE_DEFINITIONS\fP property may be set to a semicolon\-separated
|
||
list of preprocessor definitions using the syntax \fBVAR\fP or \fBVAR=value\fP\&.
|
||
Function\-style definitions are not supported. CMake will
|
||
automatically escape the value correctly for the native build system
|
||
(note that CMake language syntax may require escapes to specify some
|
||
values).
|
||
.sp
|
||
CMake will automatically drop some definitions that are not supported
|
||
by the native build tool.
|
||
.sp
|
||
Disclaimer: Most native build tools have poor support for escaping
|
||
certain values. CMake has work\-arounds for many cases but some values
|
||
may just not be possible to pass correctly. If a value does not seem
|
||
to be escaped correctly, do not attempt to work\-around the problem by
|
||
adding escape sequences to the value. Your work\-around may break in a
|
||
future version of CMake that has improved escape support. Instead
|
||
consider defining the macro in a (configured) header file. Then
|
||
report the limitation. Known limitations include:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# \- broken almost everywhere
|
||
; \- broken in VS IDE 7.0 and Borland Makefiles
|
||
, \- broken in VS IDE
|
||
% \- broken in some cases in NMake
|
||
& | \- broken in some cases on MinGW
|
||
^ < > \e" \- broken in most Make tools on Windows
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
CMake does not reject these values outright because they do work in
|
||
some cases. Use with caution.
|
||
.sp
|
||
Contents of \fBCOMPILE_DEFINITIONS\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. See the \fBcmake\-buildsystem(7)\fP manual
|
||
for more on defining buildsystem properties.
|
||
.sp
|
||
The corresponding \fBCOMPILE_DEFINITIONS_<CONFIG>\fP property may
|
||
be set to specify per\-configuration definitions. Generator expressions
|
||
should be preferred instead of setting the alternative property.
|
||
.SS COMPILE_FEATURES
|
||
.sp
|
||
Compiler features enabled for this target.
|
||
.sp
|
||
The list of features in this property are a subset of the features listed
|
||
in the \fBCMAKE_C_COMPILE_FEATURES\fP, \fBCMAKE_CUDA_COMPILE_FEATURES\fP, and
|
||
\fBCMAKE_CXX_COMPILE_FEATURES\fP variables.
|
||
.sp
|
||
Contents of \fBCOMPILE_FEATURES\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual for
|
||
available expressions. See the \fBcmake\-compile\-features(7)\fP manual
|
||
for information on compile features and a list of supported compilers.
|
||
.SS COMPILE_FLAGS
|
||
.sp
|
||
Additional flags to use when compiling this target’s sources.
|
||
.sp
|
||
The \fBCOMPILE_FLAGS\fP property sets additional compiler flags used to
|
||
build sources within the target. Use \fBCOMPILE_DEFINITIONS\fP
|
||
to pass additional preprocessor definitions.
|
||
.sp
|
||
This property is deprecated. Use the \fBCOMPILE_OPTIONS\fP
|
||
property or the \fBtarget_compile_options()\fP command instead.
|
||
.SS COMPILE_OPTIONS
|
||
.sp
|
||
List of options to pass to the compiler.
|
||
.sp
|
||
This property holds a semicolon\-separated list of options
|
||
specified so far for its target. Use the \fBtarget_compile_options()\fP
|
||
command to append more options.
|
||
.sp
|
||
This property is initialized by the \fBCOMPILE_OPTIONS\fP directory
|
||
property when a target is created, and is used by the generators to set
|
||
the options for the compiler.
|
||
.sp
|
||
Contents of \fBCOMPILE_OPTIONS\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. See the \fBcmake\-buildsystem(7)\fP manual
|
||
for more on defining buildsystem properties.
|
||
.SS COMPILE_PDB_NAME
|
||
.sp
|
||
Output name for the MS debug symbol \fB\&.pdb\fP file generated by the
|
||
compiler while building source files.
|
||
.sp
|
||
This property specifies the base name for the debug symbols file.
|
||
If not set, the default is unspecified.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
The compiler\-generated program database files are specified by the
|
||
\fB/Fd\fP compiler flag and are not the same as linker\-generated
|
||
program database files specified by the \fB/pdb\fP linker flag.
|
||
Use the \fBPDB_NAME\fP property to specify the latter.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS COMPILE_PDB_NAME_<CONFIG>
|
||
.sp
|
||
Per\-configuration output name for the MS debug symbol \fB\&.pdb\fP file
|
||
generated by the compiler while building source files.
|
||
.sp
|
||
This is the configuration\-specific version of \fBCOMPILE_PDB_NAME\fP\&.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
The compiler\-generated program database files are specified by the
|
||
\fB/Fd\fP compiler flag and are not the same as linker\-generated
|
||
program database files specified by the \fB/pdb\fP linker flag.
|
||
Use the \fBPDB_NAME_<CONFIG>\fP property to specify the latter.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS COMPILE_PDB_OUTPUT_DIRECTORY
|
||
.sp
|
||
Output directory for the MS debug symbol \fB\&.pdb\fP file
|
||
generated by the compiler while building source files.
|
||
.sp
|
||
This property specifies the directory into which the MS debug symbols
|
||
will be placed by the compiler. This property is initialized by the
|
||
value of the \fBCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY\fP variable
|
||
if it is set when a target is created.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
The compiler\-generated program database files are specified by the
|
||
\fB/Fd\fP compiler flag and are not the same as linker\-generated
|
||
program database files specified by the \fB/pdb\fP linker flag.
|
||
Use the \fBPDB_OUTPUT_DIRECTORY\fP property to specify the latter.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>
|
||
.sp
|
||
Per\-configuration output directory for the MS debug symbol \fB\&.pdb\fP file
|
||
generated by the compiler while building source files.
|
||
.sp
|
||
This is a per\-configuration version of
|
||
\fBCOMPILE_PDB_OUTPUT_DIRECTORY\fP,
|
||
but multi\-configuration generators (Visual Studio, Xcode) do NOT append a
|
||
per\-configuration subdirectory to the specified directory. This
|
||
property is initialized by the value of the
|
||
\fBCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>\fP variable
|
||
if it is set when a target is created.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
The compiler\-generated program database files are specified by the
|
||
\fB/Fd\fP compiler flag and are not the same as linker\-generated
|
||
program database files specified by the \fB/pdb\fP linker flag.
|
||
Use the \fBPDB_OUTPUT_DIRECTORY_<CONFIG>\fP property to specify the latter.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS <CONFIG>_OUTPUT_NAME
|
||
.sp
|
||
Old per\-configuration target file base name.
|
||
Use \fBOUTPUT_NAME_<CONFIG>\fP instead.
|
||
.sp
|
||
This is a configuration\-specific version of the \fBOUTPUT_NAME\fP
|
||
target property.
|
||
.SS <CONFIG>_POSTFIX
|
||
.sp
|
||
Postfix to append to the target file name for configuration <CONFIG>.
|
||
.sp
|
||
When building with configuration <CONFIG> the value of this property
|
||
is appended to the target file name built on disk. For non\-executable
|
||
targets, this property is initialized by the value of the variable
|
||
CMAKE_<CONFIG>_POSTFIX if it is set when a target is created. This
|
||
property is ignored on the Mac for Frameworks and App Bundles.
|
||
.sp
|
||
For macOS see also the \fBFRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>\fP
|
||
target property.
|
||
.SS CROSSCOMPILING_EMULATOR
|
||
.sp
|
||
Use the given emulator to run executables created when crosscompiling.
|
||
This command will be added as a prefix to \fBadd_test()\fP,
|
||
\fBadd_custom_command()\fP, and \fBadd_custom_target()\fP commands
|
||
for built target system executables.
|
||
.sp
|
||
If this property contains a semicolon\-separated list, then the first value is the command and remaining values are its
|
||
arguments.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_CROSSCOMPILING_EMULATOR\fP variable if it is set when a target
|
||
is created.
|
||
.SS CUDA_ARCHITECTURES
|
||
.sp
|
||
List of architectures to generate device code for.
|
||
.sp
|
||
An architecture can be suffixed by either \fB\-real\fP or \fB\-virtual\fP to specify
|
||
the kind of architecture to generate code for.
|
||
If no suffix is given then code is generated for both real and virtual
|
||
architectures.
|
||
.sp
|
||
A non\-empty false value (e.g. \fBOFF\fP) disables adding architectures.
|
||
This is intended to support packagers and rare cases where full control
|
||
over the passed flags is required.
|
||
.sp
|
||
This property is initialized by the value of the \fBCMAKE_CUDA_ARCHITECTURES\fP
|
||
variable if it is set when a target is created.
|
||
.sp
|
||
The \fBCUDA_ARCHITECTURES\fP target property must be set to a non\-empty value on targets
|
||
that compile CUDA sources, or it is an error. See policy \fBCMP0104\fP\&.
|
||
.SS Examples
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 35 50 72)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Generates code for real and virtual architectures \fB30\fP, \fB50\fP and \fB72\fP\&.
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES 70\-real 72\-virtual)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Generates code for real architecture \fB70\fP and virtual architecture \fB72\fP\&.
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET tgt PROPERTY CUDA_ARCHITECTURES OFF)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
CMake will not pass any architecture flags to the compiler.
|
||
.SS CUDA_PTX_COMPILATION
|
||
.sp
|
||
Compile CUDA sources to \fB\&.ptx\fP files instead of \fB\&.obj\fP files
|
||
within Object Libraries\&.
|
||
.sp
|
||
For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_library(myptx OBJECT a.cu b.cu)
|
||
set_property(TARGET myptx PROPERTY CUDA_PTX_COMPILATION ON)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS CUDA_SEPARABLE_COMPILATION
|
||
.sp
|
||
CUDA only: Enables separate compilation of device code
|
||
.sp
|
||
If set this will enable separable compilation for all CUDA files for
|
||
the given target.
|
||
.sp
|
||
For instance:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET myexe PROPERTY CUDA_SEPARABLE_COMPILATION ON)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_CUDA_SEPARABLE_COMPILATION\fP variable if it is set when a
|
||
target is created.
|
||
.SS CUDA_RESOLVE_DEVICE_SYMBOLS
|
||
.sp
|
||
CUDA only: Enables device linking for the specific library target where
|
||
required.
|
||
.sp
|
||
If set, this will tell the required compilers to enable device linking
|
||
on the library target. Device linking is an additional link step
|
||
required by some CUDA compilers when \fBCUDA_SEPARABLE_COMPILATION\fP is
|
||
enabled. Normally device linking is deferred until a shared library or
|
||
executable is generated, allowing for multiple static libraries to resolve
|
||
device symbols at the same time when they are used by a shared library or
|
||
executable.
|
||
.sp
|
||
By default static library targets have this property is disabled,
|
||
while shared, module, and executable targets have this property enabled.
|
||
.sp
|
||
Note that device linking is not supported for Object Libraries\&.
|
||
.sp
|
||
For instance:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET mystaticlib PROPERTY CUDA_RESOLVE_DEVICE_SYMBOLS ON)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS CUDA_RUNTIME_LIBRARY
|
||
.sp
|
||
Select the CUDA runtime library for use by compilers targeting the CUDA language.
|
||
.sp
|
||
The allowed case insensitive values are:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBNone\fP
|
||
Link with \fB\-cudart=none\fP or equivalent flag(s) to use no CUDA
|
||
runtime library.
|
||
.TP
|
||
.B \fBShared\fP
|
||
Link with \fB\-cudart=shared\fP or equivalent flag(s) to use a
|
||
dynamically\-linked CUDA runtime library.
|
||
.TP
|
||
.B \fBStatic\fP
|
||
Link with \fB\-cudart=static\fP or equivalent flag(s) to use a
|
||
statically\-linked CUDA runtime library.
|
||
.UNINDENT
|
||
.sp
|
||
Contents of \fBCUDA_RUNTIME_LIBRARY\fP may use
|
||
\fBgenerator expressions\fP\&.
|
||
.sp
|
||
If that property is not set then CMake uses an appropriate default
|
||
value based on the compiler to select the CUDA runtime library.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property has effect only when the \fBCUDA\fP language is enabled. To
|
||
control the CUDA runtime linking when only using the CUDA SDK with the
|
||
\fBC\fP or \fBC++\fP language we recommend using the \fBFindCUDAToolkit\fP
|
||
module.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS CUDA_EXTENSIONS
|
||
.sp
|
||
Boolean specifying whether compiler specific extensions are requested.
|
||
.sp
|
||
This property specifies whether compiler specific extensions should be
|
||
used. For some compilers, this results in adding a flag such
|
||
as \fB\-std=gnu++11\fP instead of \fB\-std=c++11\fP to the compile line. This
|
||
property is \fBON\fP by default. The basic CUDA/C++ standard level is
|
||
controlled by the \fBCUDA_STANDARD\fP target property.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_CUDA_EXTENSIONS\fP variable if it is set when a target
|
||
is created.
|
||
.SS CUDA_STANDARD
|
||
.sp
|
||
The CUDA/C++ standard whose features are requested to build this target.
|
||
.sp
|
||
This property specifies the CUDA/C++ standard whose features are requested
|
||
to build this target. For some compilers, this results in adding a
|
||
flag such as \fB\-std=gnu++11\fP to the compile line.
|
||
.sp
|
||
Supported values are \fB98\fP, \fB03\fP, \fB11\fP, \fB14\fP, \fB17\fP, \fB20\fP\&.
|
||
.sp
|
||
If the value requested does not result in a compile flag being added for
|
||
the compiler in use, a previous standard flag will be added instead. This
|
||
means that using:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET tgt PROPERTY CUDA_STANDARD 11)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
with a compiler which does not support \fB\-std=gnu++11\fP or an equivalent
|
||
flag will not result in an error or warning, but will instead add the
|
||
\fB\-std=gnu++98\fP flag if supported. This “decay” behavior may be controlled
|
||
with the \fBCUDA_STANDARD_REQUIRED\fP target property.
|
||
Additionally, the \fBCUDA_EXTENSIONS\fP target property may be used to
|
||
control whether compiler\-specific extensions are enabled on a per\-target basis.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_CUDA_STANDARD\fP variable if it is set when a target
|
||
is created.
|
||
.SS CUDA_STANDARD_REQUIRED
|
||
.sp
|
||
Boolean describing whether the value of \fBCUDA_STANDARD\fP is a requirement.
|
||
.sp
|
||
If this property is set to \fBON\fP, then the value of the
|
||
\fBCUDA_STANDARD\fP target property is treated as a requirement. If this
|
||
property is \fBOFF\fP or unset, the \fBCUDA_STANDARD\fP target property is
|
||
treated as optional and may “decay” to a previous standard if the requested is
|
||
not available. For compilers that have no notion of a standard level, such as
|
||
MSVC, this has no effect.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_CUDA_STANDARD_REQUIRED\fP variable if it is set when a
|
||
target is created.
|
||
.SS CXX_EXTENSIONS
|
||
.sp
|
||
Boolean specifying whether compiler specific extensions are requested.
|
||
.sp
|
||
This property specifies whether compiler specific extensions should be
|
||
used. For some compilers, this results in adding a flag such
|
||
as \fB\-std=gnu++11\fP instead of \fB\-std=c++11\fP to the compile line. This
|
||
property is \fBON\fP by default. The basic C++ standard level is
|
||
controlled by the \fBCXX_STANDARD\fP target property.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_CXX_EXTENSIONS\fP variable if it is set when a target
|
||
is created.
|
||
.SS CXX_STANDARD
|
||
.sp
|
||
The C++ standard whose features are requested to build this target.
|
||
.sp
|
||
This property specifies the C++ standard whose features are requested
|
||
to build this target. For some compilers, this results in adding a
|
||
flag such as \fB\-std=gnu++11\fP to the compile line. For compilers that
|
||
have no notion of a standard level, such as Microsoft Visual C++ before
|
||
2015 Update 3, this has no effect.
|
||
.sp
|
||
Supported values are \fB98\fP, \fB11\fP, \fB14\fP, \fB17\fP, and \fB20\fP\&.
|
||
.sp
|
||
If the value requested does not result in a compile flag being added for
|
||
the compiler in use, a previous standard flag will be added instead. This
|
||
means that using:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET tgt PROPERTY CXX_STANDARD 11)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
with a compiler which does not support \fB\-std=gnu++11\fP or an equivalent
|
||
flag will not result in an error or warning, but will instead add the
|
||
\fB\-std=gnu++98\fP flag if supported. This “decay” behavior may be controlled
|
||
with the \fBCXX_STANDARD_REQUIRED\fP target property.
|
||
Additionally, the \fBCXX_EXTENSIONS\fP target property may be used to
|
||
control whether compiler\-specific extensions are enabled on a per\-target basis.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_CXX_STANDARD\fP variable if it is set when a target
|
||
is created.
|
||
.SS CXX_STANDARD_REQUIRED
|
||
.sp
|
||
Boolean describing whether the value of \fBCXX_STANDARD\fP is a requirement.
|
||
.sp
|
||
If this property is set to \fBON\fP, then the value of the
|
||
\fBCXX_STANDARD\fP target property is treated as a requirement. If this
|
||
property is \fBOFF\fP or unset, the \fBCXX_STANDARD\fP target property is
|
||
treated as optional and may “decay” to a previous standard if the requested is
|
||
not available. For compilers that have no notion of a standard level, such as
|
||
MSVC, this has no effect.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_CXX_STANDARD_REQUIRED\fP variable if it is set when a
|
||
target is created.
|
||
.SS DEBUG_POSTFIX
|
||
.sp
|
||
See target property \fB<CONFIG>_POSTFIX\fP\&.
|
||
.sp
|
||
This property is a special case of the more\-general \fB<CONFIG>_POSTFIX\fP
|
||
property for the \fBDEBUG\fP configuration.
|
||
.SS DEFINE_SYMBOL
|
||
.sp
|
||
Define a symbol when compiling this target’s sources.
|
||
.sp
|
||
\fBDEFINE_SYMBOL\fP sets the name of the preprocessor symbol defined when
|
||
compiling sources in a shared library. If not set here then it is set
|
||
to \fBtarget_EXPORTS\fP by default (with some substitutions if the target is
|
||
not a valid C identifier). This is useful for headers to know whether
|
||
they are being included from inside their library or outside to
|
||
properly setup dllexport/dllimport decorations.
|
||
.SS DEPLOYMENT_REMOTE_DIRECTORY
|
||
.sp
|
||
Set the WinCE project \fBRemoteDirectory\fP in \fBDeploymentTool\fP and
|
||
\fBRemoteExecutable\fP in \fBDebuggerTool\fP in \fB\&.vcproj\fP files generated
|
||
by the \fBVisual Studio 9 2008\fP generator.
|
||
This is useful when you want to debug on remote WinCE device.
|
||
For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET ${TARGET} PROPERTY
|
||
DEPLOYMENT_REMOTE_DIRECTORY "\e\eFlashStorage")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
produces:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
<DeploymentTool RemoteDirectory="\eFlashStorage" ... />
|
||
<DebuggerTool RemoteExecutable="\eFlashStorage\etarget_file" ... />
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS DEPLOYMENT_ADDITIONAL_FILES
|
||
.sp
|
||
Set the WinCE project \fBAdditionalFiles\fP in \fBDeploymentTool\fP in \fB\&.vcproj\fP
|
||
files generated by the \fBVisual Studio 9 2008\fP generator.
|
||
This is useful when you want to debug on remote WinCE device.
|
||
Specify additional files that will be copied to the device.
|
||
For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET ${TARGET} PROPERTY
|
||
DEPLOYMENT_ADDITIONAL_FILES "english.lng|local_folder|remote_folder|0"
|
||
"german.lng|local_folder|remote_folder|0")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
produces:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
<DeploymentTool AdditionalFiles="english.lng|local_folder|remote_folder|0;german.lng|local_folder|remote_folder|0" ... />
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS DEPRECATION
|
||
.sp
|
||
Deprecation message from imported target’s developer.
|
||
.sp
|
||
\fBDEPRECATION\fP is the message regarding a deprecation status to be displayed
|
||
to downstream users of a target.
|
||
.SS DISABLE_PRECOMPILE_HEADERS
|
||
.sp
|
||
Disables the precompilation of header files specified by
|
||
\fBPRECOMPILE_HEADERS\fP property.
|
||
.sp
|
||
If the property is not set, CMake will use the value provided
|
||
by \fBCMAKE_DISABLE_PRECOMPILE_HEADERS\fP\&.
|
||
.SS DOTNET_TARGET_FRAMEWORK
|
||
.sp
|
||
Specify the .NET target framework.
|
||
.sp
|
||
Used to specify the .NET target framework for C++/CLI and C#. For
|
||
example: \fBnetcoreapp2.1\fP\&.
|
||
.sp
|
||
This property is only evaluated for Visual Studio Generators
|
||
VS 2010 and above.
|
||
.sp
|
||
Can be initialized for all targets using the variable
|
||
\fBCMAKE_DOTNET_TARGET_FRAMEWORK\fP\&.
|
||
.SS DOTNET_TARGET_FRAMEWORK_VERSION
|
||
.sp
|
||
Specify the .NET target framework version.
|
||
.sp
|
||
Used to specify the .NET target framework version for C++/CLI and C#.
|
||
For example: \fBv4.5\fP\&.
|
||
.sp
|
||
This property is only evaluated for Visual Studio Generators
|
||
VS 2010 and above.
|
||
.sp
|
||
To initialize this variable for all targets set
|
||
\fBCMAKE_DOTNET_TARGET_FRAMEWORK\fP or
|
||
\fBCMAKE_DOTNET_TARGET_FRAMEWORK_VERSION\fP\&. If both are set,
|
||
the latter is ignored.
|
||
.SS EchoString
|
||
.sp
|
||
A message to be displayed when the target is built.
|
||
.sp
|
||
A message to display on some generators (such as Makefile Generators)
|
||
when the target is built.
|
||
.SS ENABLE_EXPORTS
|
||
.sp
|
||
Specify whether an executable exports symbols for loadable modules.
|
||
.sp
|
||
Normally an executable does not export any symbols because it is the
|
||
final program. It is possible for an executable to export symbols to
|
||
be used by loadable modules. When this property is set to true CMake
|
||
will allow other targets to “link” to the executable with the
|
||
\fBtarget_link_libraries()\fP command. On all platforms a target\-level
|
||
dependency on the executable is created for targets that link to it.
|
||
Handling of the executable on the link lines of the loadable modules
|
||
varies by platform:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
On Windows\-based systems (including Cygwin) an “import library” is
|
||
created along with the executable to list the exported symbols.
|
||
Loadable modules link to the import library to get the symbols.
|
||
.IP \(bu 2
|
||
On macOS, loadable modules link to the executable itself using the
|
||
\fB\-bundle_loader\fP flag.
|
||
.IP \(bu 2
|
||
On AIX, a linker “import file” is created along with the executable
|
||
to list the exported symbols for import when linking other targets.
|
||
Loadable modules link to the import file to get the symbols.
|
||
.IP \(bu 2
|
||
On other platforms, loadable modules are simply linked without
|
||
referencing the executable since the dynamic loader will
|
||
automatically bind symbols when the module is loaded.
|
||
.UNINDENT
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_ENABLE_EXPORTS\fP if it is set when a target is created.
|
||
.SS EXCLUDE_FROM_ALL
|
||
.sp
|
||
Set this target property to a true (or false) value to exclude (or include)
|
||
the target from the “all” target of the containing directory and its
|
||
ancestors. If excluded, running e.g. \fBmake\fP in the containing directory
|
||
or its ancestors will not build the target by default.
|
||
.sp
|
||
If this target property is not set then the target will be included in
|
||
the “all” target of the containing directory. Furthermore, it will be
|
||
included in the “all” target of its ancestor directories unless the
|
||
\fBEXCLUDE_FROM_ALL\fP directory property is set.
|
||
.sp
|
||
With \fBEXCLUDE_FROM_ALL\fP set to false or not set at all, the target
|
||
will be brought up to date as part of doing a \fBmake install\fP or its
|
||
equivalent for the CMake generator being used.
|
||
.sp
|
||
If a target has \fBEXCLUDE_FROM_ALL\fP set to true, it may still be listed
|
||
in an \fBinstall(TARGETS)\fP command, but the user is responsible for
|
||
ensuring that the target’s build artifacts are not missing or outdated when
|
||
an install is performed.
|
||
.SS EXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>
|
||
.sp
|
||
Per\-configuration version of target exclusion from \fBBuild Solution\fP\&.
|
||
.sp
|
||
This is the configuration\-specific version of
|
||
\fBEXCLUDE_FROM_DEFAULT_BUILD\fP\&. If the generic
|
||
\fBEXCLUDE_FROM_DEFAULT_BUILD\fP is also set on a target,
|
||
\fBEXCLUDE_FROM_DEFAULT_BUILD_<CONFIG>\fP takes
|
||
precedence in configurations for which it has a value.
|
||
.SS EXCLUDE_FROM_DEFAULT_BUILD
|
||
.sp
|
||
Exclude target from \fBBuild Solution\fP\&.
|
||
.sp
|
||
This property is only used by Visual Studio generators.
|
||
When set to \fBTRUE\fP, the target will not be built when you press
|
||
\fBBuild Solution\fP\&.
|
||
.SS EXPORT_NAME
|
||
.sp
|
||
Exported name for target files.
|
||
.sp
|
||
This sets the name for the \fBIMPORTED\fP target generated by the
|
||
\fBinstall(EXPORT)\fP and \fBexport()\fP commands.
|
||
If not set, the logical target name is used by default.
|
||
.SS EXPORT_PROPERTIES
|
||
.sp
|
||
List additional properties to export for a target.
|
||
.sp
|
||
This property contains a list of property names that should be exported by
|
||
the \fBinstall(EXPORT)\fP and \fBexport()\fP commands. By default
|
||
only a limited number of properties are exported. This property can be used
|
||
to additionally export other properties as well.
|
||
.sp
|
||
Properties starting with \fBINTERFACE_\fP or \fBIMPORTED_\fP are not allowed as
|
||
they are reserved for internal CMake use.
|
||
.sp
|
||
Properties containing generator expressions are also not allowed.
|
||
.SS FOLDER
|
||
.sp
|
||
Set the folder name. Use to organize targets in an IDE.
|
||
.sp
|
||
Targets with no \fBFOLDER\fP property will appear as top level entities in
|
||
IDEs like Visual Studio. Targets with the same \fBFOLDER\fP property value
|
||
will appear next to each other in a folder of that name. To nest
|
||
folders, use \fBFOLDER\fP values such as ‘GUI/Dialogs’ with ‘/’ characters
|
||
separating folder levels.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_FOLDER\fP if it is set when a target is created.
|
||
.SS Fortran_FORMAT
|
||
.sp
|
||
Set to \fBFIXED\fP or \fBFREE\fP to indicate the Fortran source layout.
|
||
.sp
|
||
This property tells CMake whether the Fortran source files in a target
|
||
use fixed\-format or free\-format. CMake will pass the corresponding
|
||
format flag to the compiler. Use the source\-specific \fBFortran_FORMAT\fP
|
||
property to change the format of a specific source file. If the
|
||
variable \fBCMAKE_Fortran_FORMAT\fP is set when a target is created its
|
||
value is used to initialize this property.
|
||
.SS Fortran_MODULE_DIRECTORY
|
||
.sp
|
||
Specify output directory for Fortran modules provided by the target.
|
||
.sp
|
||
If the target contains Fortran source files that provide modules and
|
||
the compiler supports a module output directory this specifies the
|
||
directory in which the modules will be placed. When this property is
|
||
not set the modules will be placed in the build directory
|
||
corresponding to the target’s source directory. If the variable
|
||
\fBCMAKE_Fortran_MODULE_DIRECTORY\fP is set when a target is created its
|
||
value is used to initialize this property.
|
||
.sp
|
||
Note that some compilers will automatically search the module output
|
||
directory for modules USEd during compilation but others will not. If
|
||
your sources USE modules their location must be specified by
|
||
\fBINCLUDE_DIRECTORIES\fP regardless of this property.
|
||
.SS Fortran_PREPROCESS
|
||
.sp
|
||
Control whether the Fortran source file should be unconditionally
|
||
preprocessed.
|
||
.sp
|
||
If unset or empty, rely on the compiler to determine whether the file
|
||
should be preprocessed. If explicitly set to \fBOFF\fP then the file does not
|
||
need to be preprocessed. If explicitly set to \fBON\fP, then the file does
|
||
need to be preprocessed as part of the compilation step.
|
||
.sp
|
||
When using the \fBNinja\fP generator, all source files are
|
||
first preprocessed in order to generate module dependency
|
||
information. Setting this property to \fBOFF\fP will make \fBNinja\fP
|
||
skip this step.
|
||
.sp
|
||
Use the source\-specific \fBFortran_PREPROCESS\fP property if a single
|
||
file needs to be preprocessed. If the variable
|
||
\fBCMAKE_Fortran_PREPROCESS\fP is set when a target is created its
|
||
value is used to initialize this property.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
For some compilers, \fBNAG\fP, \fBPGI\fP and \fBSolaris Studio\fP,
|
||
setting this to \fBOFF\fP will have no effect.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS FRAMEWORK
|
||
.sp
|
||
Build \fBSHARED\fP or \fBSTATIC\fP library as Framework Bundle on the macOS and iOS.
|
||
.sp
|
||
If such a library target has this property set to \fBTRUE\fP it will be
|
||
built as a framework when built on the macOS and iOS. It will have the
|
||
directory structure required for a framework and will be suitable to
|
||
be used with the \fB\-framework\fP option. This property is initialized by the
|
||
value of the \fBCMAKE_FRAMEWORK\fP variable if it is set when a target is
|
||
created.
|
||
.sp
|
||
To customize \fBInfo.plist\fP file in the framework, use
|
||
\fBMACOSX_FRAMEWORK_INFO_PLIST\fP target property.
|
||
.sp
|
||
For macOS see also the \fBFRAMEWORK_VERSION\fP target property.
|
||
.sp
|
||
Example of creation \fBdynamicFramework\fP:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_library(dynamicFramework SHARED
|
||
dynamicFramework.c
|
||
dynamicFramework.h
|
||
)
|
||
set_target_properties(dynamicFramework PROPERTIES
|
||
FRAMEWORK TRUE
|
||
FRAMEWORK_VERSION C
|
||
MACOSX_FRAMEWORK_IDENTIFIER com.cmake.dynamicFramework
|
||
MACOSX_FRAMEWORK_INFO_PLIST Info.plist
|
||
# "current version" in semantic format in Mach\-O binary file
|
||
VERSION 16.4.0
|
||
# "compatibility version" in semantic format in Mach\-O binary file
|
||
SOVERSION 1.0.0
|
||
PUBLIC_HEADER dynamicFramework.h
|
||
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>
|
||
.sp
|
||
Postfix to append to the framework file name for configuration \fB<CONFIG>\fP,
|
||
when using a multi\-config generator (like Xcode and Ninja Multi\-Config).
|
||
.sp
|
||
When building with configuration \fB<CONFIG>\fP the value of this property
|
||
is appended to the framework file name built on disk.
|
||
.sp
|
||
For example, given a framework called \fBmy_fw\fP, a value of \fB_debug\fP
|
||
for the \fBFRAMEWORK_MULTI_CONFIG_POSTFIX_DEBUG\fP property, and
|
||
\fBDebug;Release\fP in \fBCMAKE_CONFIGURATION_TYPES\fP, the following
|
||
relevant files would be created for the \fBDebug\fP and \fBRelease\fP
|
||
configurations:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBRelease/my_fw.framework/my_fw\fP
|
||
.IP \(bu 2
|
||
\fBRelease/my_fw.framework/Versions/A/my_fw\fP
|
||
.IP \(bu 2
|
||
\fBDebug/my_fw.framework/my_fw_debug\fP
|
||
.IP \(bu 2
|
||
\fBDebug/my_fw.framework/Versions/A/my_fw_debug\fP
|
||
.UNINDENT
|
||
.sp
|
||
For framework targets, this property is initialized by the value of the
|
||
\fBCMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>\fP variable if it
|
||
is set when a target is created.
|
||
.sp
|
||
This property is ignored for non\-framework targets, and when using single
|
||
config generators.
|
||
.SS FRAMEWORK_VERSION
|
||
.sp
|
||
Version of a framework created using the \fBFRAMEWORK\fP target
|
||
property (e.g. \fBA\fP).
|
||
.sp
|
||
This property only affects macOS, as iOS doesn’t have versioned
|
||
directory structure.
|
||
.SS GENERATOR_FILE_NAME
|
||
.sp
|
||
Generator’s file for this target.
|
||
.sp
|
||
An internal property used by some generators to record the name of the
|
||
project or dsp file associated with this target. Note that at
|
||
configure time, this property is only set for targets created by
|
||
\fBinclude_external_msproject()\fP\&.
|
||
.SS GHS_INTEGRITY_APP
|
||
.sp
|
||
\fBON\fP / \fBOFF\fP boolean to determine if an executable target should
|
||
be treated as an \fIIntegrity Application\fP\&.
|
||
.sp
|
||
If no value is set and if a \fB\&.int\fP file is added as a source file to the
|
||
executable target it will be treated as an \fIIntegrity Application\fP\&.
|
||
.sp
|
||
Supported on \fBGreen Hills MULTI\fP\&.
|
||
.SS GHS_NO_SOURCE_GROUP_FILE
|
||
.sp
|
||
\fBON\fP / \fBOFF\fP boolean to control if the project file for a target should
|
||
be one single file or multiple files.
|
||
.sp
|
||
The default behavior or when the property is \fBOFF\fP is to generate a project
|
||
file for the target and then a sub\-project file for each source group.
|
||
.sp
|
||
When this property is \fBON\fP or if \fBCMAKE_GHS_NO_SOURCE_GROUP_FILE\fP
|
||
is \fBON\fP then only a single project file is generated for the target.
|
||
.sp
|
||
Supported on \fBGreen Hills MULTI\fP\&.
|
||
.SS GNUtoMS
|
||
.sp
|
||
Convert GNU import library (\fB\&.dll.a\fP) to MS format (\fB\&.lib\fP).
|
||
.sp
|
||
When linking a shared library or executable that exports symbols using
|
||
GNU tools on Windows (MinGW/MSYS) with Visual Studio installed convert
|
||
the import library (\fB\&.dll.a\fP) from GNU to MS format (\fB\&.lib\fP). Both import
|
||
libraries will be installed by \fBinstall(TARGETS)\fP and exported by
|
||
\fBinstall(EXPORT)\fP and \fBexport()\fP to be linked
|
||
by applications with either GNU\- or MS\-compatible tools.
|
||
.sp
|
||
If the variable \fBCMAKE_GNUtoMS\fP is set when a target is created its
|
||
value is used to initialize this property. The variable must be set
|
||
prior to the first command that enables a language such as \fBproject()\fP
|
||
or \fBenable_language()\fP\&. CMake provides the variable as an option to the
|
||
user automatically when configuring on Windows with GNU tools.
|
||
.SS HAS_CXX
|
||
.sp
|
||
Link the target using the C++ linker tool (obsolete).
|
||
.sp
|
||
This is equivalent to setting the \fBLINKER_LANGUAGE\fP
|
||
property to \fBCXX\fP\&.
|
||
.SS IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
|
||
.sp
|
||
Specify #include line transforms for dependencies in a target.
|
||
.sp
|
||
This property specifies rules to transform macro\-like #include lines
|
||
during implicit dependency scanning of C and C++ source files. The
|
||
list of rules must be semicolon\-separated with each entry of the form
|
||
“A_MACRO(%)=value\-with\-%” (the % must be literal). During dependency
|
||
scanning occurrences of A_MACRO(…) on #include lines will be
|
||
replaced by the value given with the macro argument substituted for
|
||
‘%’. For example, the entry
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
MYDIR(%)=<mydir/%>
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
will convert lines of the form
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
#include MYDIR(myheader.h)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
to
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
#include <mydir/myheader.h>
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
allowing the dependency to be followed.
|
||
.sp
|
||
This property applies to sources in the target on which it is set.
|
||
.SS IMPORTED_COMMON_LANGUAGE_RUNTIME
|
||
.sp
|
||
Property to define if the target uses \fBC++/CLI\fP\&.
|
||
.sp
|
||
Ignored for non\-imported targets.
|
||
.sp
|
||
See also the \fBCOMMON_LANGUAGE_RUNTIME\fP target property.
|
||
.SS IMPORTED_CONFIGURATIONS
|
||
.sp
|
||
Configurations provided for an IMPORTED target.
|
||
.sp
|
||
Set this to the list of configuration names available for an IMPORTED
|
||
target. The names correspond to configurations defined in the project
|
||
from which the target is imported. If the importing project uses a
|
||
different set of configurations the names may be mapped using the
|
||
MAP_IMPORTED_CONFIG_<CONFIG> property. Ignored for non\-imported
|
||
targets.
|
||
.SS IMPORTED_GLOBAL
|
||
.sp
|
||
Indication of whether an IMPORTED target is
|
||
globally visible.
|
||
.sp
|
||
The boolean value of this property is True for targets created with the
|
||
\fBIMPORTED\fP \fBGLOBAL\fP options to \fBadd_executable()\fP or
|
||
\fBadd_library()\fP\&. It is always False for targets built within the
|
||
project.
|
||
.sp
|
||
For targets created with the \fBIMPORTED\fP option to
|
||
\fBadd_executable()\fP or \fBadd_library()\fP but without the
|
||
additional option \fBGLOBAL\fP this is False, too. However, setting this
|
||
property for such a locally \fBIMPORTED\fP target to True promotes that
|
||
target to global scope. This promotion can only be done in the same
|
||
directory where that \fBIMPORTED\fP target was created in the first place.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
Once an imported target has been made global, it cannot be changed back to
|
||
non\-global. Therefore, if a project sets this property, it may only
|
||
provide a value of True. CMake will issue an error if the project tries to
|
||
set the property to a non\-True value, even if the value was already False.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
Local ALIAS targets created before promoting an
|
||
IMPORTED target from \fBLOCAL\fP to \fBGLOBAL\fP, keep
|
||
their initial scope (see \fBALIAS_GLOBAL\fP target property).
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS IMPORTED_IMPLIB_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_IMPLIB\fP property.
|
||
.sp
|
||
Configuration names correspond to those provided by the project from
|
||
which the target is imported.
|
||
.SS IMPORTED_IMPLIB
|
||
.sp
|
||
Full path to the import library for an \fBIMPORTED\fP target.
|
||
.sp
|
||
Set this to the location of the \fB\&.lib\fP part of a Windows DLL, or on
|
||
AIX set it to an import file created for executables that export symbols
|
||
(see the \fBENABLE_EXPORTS\fP target property).
|
||
Ignored for non\-imported targets.
|
||
.SS IMPORTED_LIBNAME_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_LIBNAME\fP property.
|
||
.sp
|
||
Configuration names correspond to those provided by the project from
|
||
which the target is imported.
|
||
.SS IMPORTED_LIBNAME
|
||
.sp
|
||
Specify the link library name for an imported
|
||
Interface Library\&.
|
||
.sp
|
||
An interface library builds no library file itself but does specify
|
||
usage requirements for its consumers. The \fBIMPORTED_LIBNAME\fP
|
||
property may be set to specify a single library name to be placed
|
||
on the link line in place of the interface library target name as
|
||
a requirement for using the interface.
|
||
.sp
|
||
This property is intended for use in naming libraries provided by
|
||
a platform SDK for which the full path to a library file may not
|
||
be known. The value may be a plain library name such as \fBfoo\fP
|
||
but may \fInot\fP be a path (e.g. \fB/usr/lib/libfoo.so\fP) or a flag
|
||
(e.g. \fB\-Wl,...\fP). The name is never treated as a library target
|
||
name even if it happens to name one.
|
||
.sp
|
||
The \fBIMPORTED_LIBNAME\fP property is allowed only on
|
||
imported Interface Libraries
|
||
and is rejected on targets of other types (for which
|
||
the \fBIMPORTED_LOCATION\fP target property may be used).
|
||
.SS IMPORTED_LINK_DEPENDENT_LIBRARIES_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_LINK_DEPENDENT_LIBRARIES\fP\&.
|
||
.sp
|
||
Configuration names correspond to those provided by the project from
|
||
which the target is imported. If set, this property completely
|
||
overrides the generic property for the named configuration.
|
||
.SS IMPORTED_LINK_DEPENDENT_LIBRARIES
|
||
.sp
|
||
Dependent shared libraries of an imported shared library.
|
||
.sp
|
||
Shared libraries may be linked to other shared libraries as part of
|
||
their implementation. On some platforms the linker searches for the
|
||
dependent libraries of shared libraries they are including in the
|
||
link. Set this property to the list of dependent shared libraries of
|
||
an imported library. The list should be disjoint from the list of
|
||
interface libraries in the \fBINTERFACE_LINK_LIBRARIES\fP property. On
|
||
platforms requiring dependent shared libraries to be found at link
|
||
time CMake uses this list to add appropriate files or paths to the
|
||
link command line. Ignored for non\-imported targets.
|
||
.SS IMPORTED_LINK_INTERFACE_LANGUAGES_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_LINK_INTERFACE_LANGUAGES\fP\&.
|
||
.sp
|
||
Configuration names correspond to those provided by the project from
|
||
which the target is imported. If set, this property completely
|
||
overrides the generic property for the named configuration.
|
||
.SS IMPORTED_LINK_INTERFACE_LANGUAGES
|
||
.sp
|
||
Languages compiled into an \fBIMPORTED\fP static library.
|
||
.sp
|
||
Set this to the list of languages of source files compiled to produce
|
||
a \fBSTATIC IMPORTED\fP library (such as \fBC\fP or \fBCXX\fP). CMake accounts for
|
||
these languages when computing how to link a target to the imported
|
||
library. For example, when a C executable links to an imported C++
|
||
static library CMake chooses the C++ linker to satisfy language
|
||
runtime dependencies of the static library.
|
||
.sp
|
||
This property is ignored for targets that are not \fBSTATIC\fP libraries.
|
||
This property is ignored for non\-imported targets.
|
||
.SS IMPORTED_LINK_INTERFACE_LIBRARIES_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_LINK_INTERFACE_LIBRARIES\fP\&.
|
||
.sp
|
||
Configuration names correspond to those provided by the project from
|
||
which the target is imported. If set, this property completely
|
||
overrides the generic property for the named configuration.
|
||
.sp
|
||
This property is ignored if the target also has a non\-empty
|
||
\fBINTERFACE_LINK_LIBRARIES\fP property.
|
||
.sp
|
||
This property is deprecated. Use \fBINTERFACE_LINK_LIBRARIES\fP instead.
|
||
.SS IMPORTED_LINK_INTERFACE_LIBRARIES
|
||
.sp
|
||
Transitive link interface of an \fBIMPORTED\fP target.
|
||
.sp
|
||
Set this to the list of libraries whose interface is included when an
|
||
\fBIMPORTED\fP library target is linked to another target. The libraries
|
||
will be included on the link line for the target. Unlike the
|
||
\fBLINK_INTERFACE_LIBRARIES\fP property, this property applies to all
|
||
imported target types, including \fBSTATIC\fP libraries. This property is
|
||
ignored for non\-imported targets.
|
||
.sp
|
||
This property is ignored if the target also has a non\-empty
|
||
\fBINTERFACE_LINK_LIBRARIES\fP property.
|
||
.sp
|
||
This property is deprecated. Use \fBINTERFACE_LINK_LIBRARIES\fP instead.
|
||
.SS IMPORTED_LINK_INTERFACE_MULTIPLICITY_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_LINK_INTERFACE_MULTIPLICITY\fP\&.
|
||
.sp
|
||
If set, this property completely overrides the generic property for
|
||
the named configuration.
|
||
.SS IMPORTED_LINK_INTERFACE_MULTIPLICITY
|
||
.sp
|
||
Repetition count for cycles of \fBIMPORTED\fP static libraries.
|
||
.sp
|
||
This is \fBLINK_INTERFACE_MULTIPLICITY\fP for \fBIMPORTED\fP targets.
|
||
.SS IMPORTED_LOCATION_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_LOCATION\fP property.
|
||
.sp
|
||
Configuration names correspond to those provided by the project from
|
||
which the target is imported.
|
||
.SS IMPORTED_LOCATION
|
||
.sp
|
||
Full path to the main file on disk for an \fBIMPORTED\fP target.
|
||
.sp
|
||
Set this to the location of an \fBIMPORTED\fP target file on disk. For
|
||
executables this is the location of the executable file. For bundles
|
||
on macOS this is the location of the executable file inside
|
||
\fBContents/MacOS\fP under the application bundle folder. For \fBSTATIC\fP
|
||
libraries and modules this is the location of the library or module.
|
||
For \fBSHARED\fP libraries on non\-DLL platforms this is the location of the
|
||
shared library. For frameworks on macOS this is the location of the
|
||
library file symlink just inside the framework folder. For DLLs this
|
||
is the location of the \fB\&.dll\fP part of the library. For \fBUNKNOWN\fP
|
||
libraries this is the location of the file to be linked. Ignored for
|
||
non\-imported targets.
|
||
.sp
|
||
The \fBIMPORTED_LOCATION\fP target property may be overridden for a
|
||
given configuration \fB<CONFIG>\fP by the configuration\-specific
|
||
\fBIMPORTED_LOCATION_<CONFIG>\fP target property. Furthermore,
|
||
the \fBMAP_IMPORTED_CONFIG_<CONFIG>\fP target property may be
|
||
used to map between a project’s configurations and those of an imported
|
||
target. If none of these is set then the name of any other configuration
|
||
listed in the \fBIMPORTED_CONFIGURATIONS\fP target property may be
|
||
selected and its \fBIMPORTED_LOCATION_<CONFIG>\fP value used.
|
||
.sp
|
||
To get the location of an imported target read one of the \fBLOCATION\fP
|
||
or \fBLOCATION_<CONFIG>\fP properties.
|
||
.sp
|
||
For platforms with import libraries (e.g. Windows) see also
|
||
\fBIMPORTED_IMPLIB\fP\&.
|
||
.SS IMPORTED_NO_SONAME_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_NO_SONAME\fP property.
|
||
.sp
|
||
Configuration names correspond to those provided by the project from
|
||
which the target is imported.
|
||
.SS IMPORTED_NO_SONAME
|
||
.sp
|
||
Specifies that an \fBIMPORTED\fP shared library target has no \fBsoname\fP\&.
|
||
.sp
|
||
Set this property to true for an imported shared library file that has
|
||
no \fBsoname\fP field. CMake may adjust generated link commands for some
|
||
platforms to prevent the linker from using the path to the library in
|
||
place of its missing \fBsoname\fP\&. Ignored for non\-imported targets.
|
||
.SS IMPORTED_OBJECTS_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_OBJECTS\fP property.
|
||
.sp
|
||
Configuration names correspond to those provided by the project from
|
||
which the target is imported.
|
||
.SS IMPORTED_OBJECTS
|
||
.sp
|
||
A semicolon\-separated list of absolute paths to the object
|
||
files on disk for an imported
|
||
object library\&.
|
||
.sp
|
||
Ignored for non\-imported targets.
|
||
.sp
|
||
Projects may skip \fBIMPORTED_OBJECTS\fP if the configuration\-specific
|
||
property \fBIMPORTED_OBJECTS_<CONFIG>\fP is set instead.
|
||
.SS IMPORTED
|
||
.sp
|
||
Read\-only indication of whether a target is \fBIMPORTED\fP\&.
|
||
.sp
|
||
The boolean value of this property is \fBTrue\fP for targets created with
|
||
the \fBIMPORTED\fP option to \fBadd_executable()\fP or \fBadd_library()\fP\&.
|
||
It is \fBFalse\fP for targets built within the project.
|
||
.SS IMPORTED_SONAME_<CONFIG>
|
||
.sp
|
||
<CONFIG>\-specific version of \fBIMPORTED_SONAME\fP property.
|
||
.sp
|
||
Configuration names correspond to those provided by the project from
|
||
which the target is imported.
|
||
.SS IMPORTED_SONAME
|
||
.sp
|
||
The \fBsoname\fP of an \fBIMPORTED\fP target of shared library type.
|
||
.sp
|
||
Set this to the \fBsoname\fP embedded in an imported shared library. This
|
||
is meaningful only on platforms supporting the feature. Ignored for
|
||
non\-imported targets.
|
||
.SS IMPORT_PREFIX
|
||
.sp
|
||
What comes before the import library name.
|
||
.sp
|
||
Similar to the target property \fBPREFIX\fP, but used for import libraries
|
||
(typically corresponding to a \fBDLL\fP) instead of regular libraries. A
|
||
target property that can be set to override the prefix (such as \fBlib\fP)
|
||
on an import library name.
|
||
.SS IMPORT_SUFFIX
|
||
.sp
|
||
What comes after the import library name.
|
||
.sp
|
||
Similar to the target property \fBSUFFIX\fP, but used
|
||
for import libraries (typically corresponding to a \fBDLL\fP) instead of
|
||
regular libraries. A target property that can be set to override
|
||
the suffix (such as \fB\&.lib\fP) on an import library name.
|
||
.SS INCLUDE_DIRECTORIES
|
||
.sp
|
||
List of preprocessor include file search directories.
|
||
.sp
|
||
This property specifies the list of directories given so far to the
|
||
\fBtarget_include_directories()\fP command. In addition to accepting
|
||
values from that command, values may be set directly on any
|
||
target using the \fBset_property()\fP command. A target gets its
|
||
initial value for this property from the value of the
|
||
\fBINCLUDE_DIRECTORIES\fP directory property. Both directory and
|
||
target property values are adjusted by calls to the
|
||
\fBinclude_directories()\fP command.
|
||
.sp
|
||
The value of this property is used by the generators to set the include
|
||
paths for the compiler.
|
||
.sp
|
||
Relative paths should not be added to this property directly. Use one of
|
||
the commands above instead to handle relative paths.
|
||
.sp
|
||
Contents of \fBINCLUDE_DIRECTORIES\fP may use \fBcmake\-generator\-expressions(7)\fP with
|
||
the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.SS INSTALL_NAME_DIR
|
||
.sp
|
||
macOS directory name for installed targets.
|
||
.sp
|
||
\fBINSTALL_NAME_DIR\fP is a string specifying the directory portion of the
|
||
“install_name” field of shared libraries on macOS to use in the
|
||
installed targets.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_INSTALL_NAME_DIR\fP if it is set when a target is
|
||
created.
|
||
.sp
|
||
This property supports \fBgenerator expressions\fP\&.
|
||
In particular, the \fB$<INSTALL_PREFIX>\fP generator expression can be used to set the
|
||
directory relative to the install\-time prefix.
|
||
.SS INSTALL_REMOVE_ENVIRONMENT_RPATH
|
||
.sp
|
||
Controls whether toolchain\-defined rpaths should be removed during installation.
|
||
.sp
|
||
When a target is being installed, CMake may need to rewrite its rpath
|
||
information. This occurs when the install rpath (as specified by the
|
||
\fBINSTALL_RPATH\fP target property) has different contents to the rpath
|
||
that the target was built with. Some toolchains insert their own rpath
|
||
contents into the binary as part of the build. By default, CMake will
|
||
preserve those extra inserted contents in the install rpath. For those
|
||
scenarios where such toolchain\-inserted entries need to be discarded during
|
||
install, set the \fBINSTALL_REMOVE_ENVIRONMENT_RPATH\fP target property to true.
|
||
.sp
|
||
This property is initialized by the value of
|
||
\fBCMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH\fP when the target is created.
|
||
.SS INSTALL_RPATH
|
||
.sp
|
||
The rpath to use for installed targets.
|
||
.sp
|
||
A semicolon\-separated list specifying the rpath to use in installed
|
||
targets (for platforms that support it). This property is initialized
|
||
by the value of the variable \fBCMAKE_INSTALL_RPATH\fP if it is set when
|
||
a target is created.
|
||
.sp
|
||
Because the rpath may contain \fB${ORIGIN}\fP, which coincides with CMake syntax,
|
||
the contents of \fBINSTALL_RPATH\fP are properly escaped in the
|
||
\fBcmake_install.cmake\fP script (see policy \fBCMP0095\fP\&.)
|
||
.sp
|
||
This property supports
|
||
\fBgenerator expressions\fP\&.
|
||
.SS INSTALL_RPATH_USE_LINK_PATH
|
||
.sp
|
||
Add paths to linker search and installed rpath.
|
||
.sp
|
||
\fBINSTALL_RPATH_USE_LINK_PATH\fP is a boolean that if set to \fBTrue\fP
|
||
will append to the runtime search path (rpath) of installed binaries
|
||
any directories outside the project that are in the linker search path or
|
||
contain linked library files. The directories are appended after the
|
||
value of the \fBINSTALL_RPATH\fP target property.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_INSTALL_RPATH_USE_LINK_PATH\fP if it is set when a target is
|
||
created.
|
||
.SS INTERFACE_AUTOUIC_OPTIONS
|
||
.sp
|
||
List of interface options to pass to uic.
|
||
.sp
|
||
Targets may populate this property to publish the options
|
||
required to use when invoking \fBuic\fP\&. Consuming targets can add entries to their
|
||
own \fBAUTOUIC_OPTIONS\fP property such as
|
||
\fB$<TARGET_PROPERTY:foo,INTERFACE_AUTOUIC_OPTIONS>\fP to use the uic options
|
||
specified in the interface of \fBfoo\fP\&. This is done automatically by
|
||
the \fBtarget_link_libraries()\fP command.
|
||
.sp
|
||
This property supports generator expressions. See the
|
||
\fBcmake\-generator\-expressions(7)\fP manual for available expressions.
|
||
.SS INTERFACE_COMPILE_DEFINITIONS
|
||
.sp
|
||
List of public compile definitions requirements for a library.
|
||
.sp
|
||
Targets may populate this property to publish the compile definitions
|
||
required to compile against the headers for the target. The \fBtarget_compile_definitions()\fP
|
||
command populates this property with values given to the \fBPUBLIC\fP and
|
||
\fBINTERFACE\fP keywords. Projects may also get and set the property directly.
|
||
.sp
|
||
When target dependencies are specified using \fBtarget_link_libraries()\fP,
|
||
CMake will read this property from all target dependencies to determine the
|
||
build properties of the consumer.
|
||
.sp
|
||
Contents of \fBINTERFACE_COMPILE_DEFINITIONS\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
\-manual for more on defining buildsystem properties.
|
||
.SS INTERFACE_COMPILE_FEATURES
|
||
.sp
|
||
List of public compile features requirements for a library.
|
||
.sp
|
||
Targets may populate this property to publish the compile features
|
||
required to compile against the headers for the target. The \fBtarget_compile_features()\fP
|
||
command populates this property with values given to the \fBPUBLIC\fP and
|
||
\fBINTERFACE\fP keywords. Projects may also get and set the property directly.
|
||
.sp
|
||
When target dependencies are specified using \fBtarget_link_libraries()\fP,
|
||
CMake will read this property from all target dependencies to determine the
|
||
build properties of the consumer.
|
||
.sp
|
||
Contents of \fBINTERFACE_COMPILE_FEATURES\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
\-manual for more on defining buildsystem properties.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on compile
|
||
features and a list of supported compilers.
|
||
.SS INTERFACE_COMPILE_OPTIONS
|
||
.sp
|
||
List of public compile options requirements for a library.
|
||
.sp
|
||
Targets may populate this property to publish the compile options
|
||
required to compile against the headers for the target. The \fBtarget_compile_options()\fP
|
||
command populates this property with values given to the \fBPUBLIC\fP and
|
||
\fBINTERFACE\fP keywords. Projects may also get and set the property directly.
|
||
.sp
|
||
When target dependencies are specified using \fBtarget_link_libraries()\fP,
|
||
CMake will read this property from all target dependencies to determine the
|
||
build properties of the consumer.
|
||
.sp
|
||
Contents of \fBINTERFACE_COMPILE_OPTIONS\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
\-manual for more on defining buildsystem properties.
|
||
.SS INTERFACE_INCLUDE_DIRECTORIES
|
||
.sp
|
||
List of public include directories requirements for a library.
|
||
.sp
|
||
Targets may populate this property to publish the include directories
|
||
required to compile against the headers for the target. The \fBtarget_include_directories()\fP
|
||
command populates this property with values given to the \fBPUBLIC\fP and
|
||
\fBINTERFACE\fP keywords. Projects may also get and set the property directly.
|
||
.sp
|
||
When target dependencies are specified using \fBtarget_link_libraries()\fP,
|
||
CMake will read this property from all target dependencies to determine the
|
||
build properties of the consumer.
|
||
.sp
|
||
Contents of \fBINTERFACE_INCLUDE_DIRECTORIES\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
\-manual for more on defining buildsystem properties.
|
||
.sp
|
||
Include directories usage requirements commonly differ between the build\-tree
|
||
and the install\-tree. The \fBBUILD_INTERFACE\fP and \fBINSTALL_INTERFACE\fP
|
||
generator expressions can be used to describe separate usage requirements
|
||
based on the usage location. Relative paths are allowed within the
|
||
\fBINSTALL_INTERFACE\fP expression and are interpreted relative to the
|
||
installation prefix. For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
target_include_directories(mylib INTERFACE
|
||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/mylib>
|
||
$<INSTALL_INTERFACE:include/mylib> # <prefix>/include/mylib
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS Creating Relocatable Packages
|
||
.sp
|
||
Note that it is not advisable to populate the \fBINSTALL_INTERFACE\fP of the
|
||
\fBINTERFACE_INCLUDE_DIRECTORIES\fP of a target with absolute paths to the include
|
||
directories of dependencies. That would hard\-code into installed packages
|
||
the include directory paths for dependencies
|
||
\fBas found on the machine the package was made on\fP\&.
|
||
.sp
|
||
The \fBINSTALL_INTERFACE\fP of the \fBINTERFACE_INCLUDE_DIRECTORIES\fP is only
|
||
suitable for specifying the required include directories for headers
|
||
provided with the target itself, not those provided by the transitive
|
||
dependencies listed in its \fBINTERFACE_LINK_LIBRARIES\fP target
|
||
property. Those dependencies should themselves be targets that specify
|
||
their own header locations in \fBINTERFACE_INCLUDE_DIRECTORIES\fP\&.
|
||
.sp
|
||
See the Creating Relocatable Packages section of the
|
||
\fBcmake\-packages(7)\fP manual for discussion of additional care
|
||
that must be taken when specifying usage requirements while creating
|
||
packages for redistribution.
|
||
.SS INTERFACE_LINK_DEPENDS
|
||
.sp
|
||
Additional public interface files on which a target binary depends for linking.
|
||
.sp
|
||
This property is supported only by \fBNinja\fP and
|
||
Makefile Generators\&.
|
||
It is intended to specify dependencies on “linker scripts” for
|
||
custom Makefile link rules.
|
||
.sp
|
||
When target dependencies are specified using \fBtarget_link_libraries()\fP,
|
||
CMake will read this property from all target dependencies to determine the
|
||
build properties of the consumer.
|
||
.sp
|
||
Contents of \fBINTERFACE_LINK_DEPENDS\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
\-manual for more on defining buildsystem properties.
|
||
.sp
|
||
Link dependency files usage requirements commonly differ between the build\-tree
|
||
and the install\-tree. The \fBBUILD_INTERFACE\fP and \fBINSTALL_INTERFACE\fP
|
||
generator expressions can be used to describe separate usage requirements
|
||
based on the usage location. Relative paths are allowed within the
|
||
\fBINSTALL_INTERFACE\fP expression and are interpreted relative to the
|
||
installation prefix. For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET mylib PROPERTY INTERFACE_LINK_DEPENDS
|
||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/mylinkscript>
|
||
$<INSTALL_INTERFACE:mylinkscript> # <prefix>/mylinkscript
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS INTERFACE_LINK_DIRECTORIES
|
||
.sp
|
||
List of public link directories requirements for a library.
|
||
.sp
|
||
Targets may populate this property to publish the link directories
|
||
required to compile against the headers for the target. The \fBtarget_link_directories()\fP
|
||
command populates this property with values given to the \fBPUBLIC\fP and
|
||
\fBINTERFACE\fP keywords. Projects may also get and set the property directly.
|
||
.sp
|
||
When target dependencies are specified using \fBtarget_link_libraries()\fP,
|
||
CMake will read this property from all target dependencies to determine the
|
||
build properties of the consumer.
|
||
.sp
|
||
Contents of \fBINTERFACE_LINK_DIRECTORIES\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
\-manual for more on defining buildsystem properties.
|
||
.SS INTERFACE_LINK_LIBRARIES
|
||
.sp
|
||
List public interface libraries for a library.
|
||
.sp
|
||
This property contains the list of transitive link dependencies. When
|
||
the target is linked into another target using the
|
||
\fBtarget_link_libraries()\fP command, the libraries listed (and
|
||
recursively their link interface libraries) will be provided to the
|
||
other target also. This property is overridden by the
|
||
\fBLINK_INTERFACE_LIBRARIES\fP or
|
||
\fBLINK_INTERFACE_LIBRARIES_<CONFIG>\fP property if policy
|
||
\fBCMP0022\fP is \fBOLD\fP or unset.
|
||
.sp
|
||
Contents of \fBINTERFACE_LINK_LIBRARIES\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
A call to \fBtarget_link_libraries(<target> ...)\fP may update this
|
||
property on \fB<target>\fP\&. If \fB<target>\fP was not created in the same
|
||
directory as the call then \fBtarget_link_libraries()\fP will wrap each
|
||
entry with the form \fB::@(directory\-id);...;::@\fP, where the \fB::@\fP is
|
||
literal and the \fB(directory\-id)\fP is unspecified.
|
||
This tells the generators that the named libraries must be looked up in
|
||
the scope of the caller rather than in the scope in which the
|
||
\fB<target>\fP was created. Valid directory ids are stripped on export
|
||
by the \fBinstall(EXPORT)\fP and \fBexport()\fP commands.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS Creating Relocatable Packages
|
||
.sp
|
||
Note that it is not advisable to populate the
|
||
\fBINTERFACE_LINK_LIBRARIES\fP of a target with absolute paths to dependencies.
|
||
That would hard\-code into installed packages the library file paths
|
||
for dependencies \fBas found on the machine the package was made on\fP\&.
|
||
.sp
|
||
See the Creating Relocatable Packages section of the
|
||
\fBcmake\-packages(7)\fP manual for discussion of additional care
|
||
that must be taken when specifying usage requirements while creating
|
||
packages for redistribution.
|
||
.SS INTERFACE_LINK_OPTIONS
|
||
.sp
|
||
List of public link options requirements for a library.
|
||
.sp
|
||
Targets may populate this property to publish the link options
|
||
required to compile against the headers for the target. The \fBtarget_link_options()\fP
|
||
command populates this property with values given to the \fBPUBLIC\fP and
|
||
\fBINTERFACE\fP keywords. Projects may also get and set the property directly.
|
||
.sp
|
||
When target dependencies are specified using \fBtarget_link_libraries()\fP,
|
||
CMake will read this property from all target dependencies to determine the
|
||
build properties of the consumer.
|
||
.sp
|
||
Contents of \fBINTERFACE_LINK_OPTIONS\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
\-manual for more on defining buildsystem properties.
|
||
.SS INTERFACE_PRECOMPILE_HEADERS
|
||
.sp
|
||
List of interface header files to precompile into consuming targets.
|
||
.sp
|
||
Targets may populate this property to publish the header files
|
||
for consuming targets to precompile. The \fBtarget_precompile_headers()\fP
|
||
command populates this property with values given to the \fBPUBLIC\fP and
|
||
\fBINTERFACE\fP keywords. Projects may also get and set the property directly.
|
||
See the discussion in \fBtarget_precompile_headers()\fP for guidance on
|
||
appropriate use of this property for installed or exported targets.
|
||
.sp
|
||
Contents of \fBINTERFACE_PRECOMPILE_HEADERS\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.SS INTERFACE_POSITION_INDEPENDENT_CODE
|
||
.sp
|
||
Whether consumers need to create a position\-independent target
|
||
.sp
|
||
The \fBINTERFACE_POSITION_INDEPENDENT_CODE\fP property informs consumers of
|
||
this target whether they must set their
|
||
\fBPOSITION_INDEPENDENT_CODE\fP property to \fBON\fP\&. If this
|
||
property is set to \fBON\fP, then the \fBPOSITION_INDEPENDENT_CODE\fP
|
||
property on all consumers will be set to \fBON\fP\&. Similarly, if this
|
||
property is set to \fBOFF\fP, then the \fBPOSITION_INDEPENDENT_CODE\fP
|
||
property on all consumers will be set to \fBOFF\fP\&. If this property is
|
||
undefined, then consumers will determine their
|
||
\fBPOSITION_INDEPENDENT_CODE\fP property by other means. Consumers
|
||
must ensure that the targets that they link to have a consistent
|
||
requirement for their \fBINTERFACE_POSITION_INDEPENDENT_CODE\fP property.
|
||
.sp
|
||
Contents of \fBINTERFACE_POSITION_INDEPENDENT_CODE\fP may use
|
||
“generator expressions” with the syntax \fB$<...>\fP\&. See the
|
||
\fBcmake\-generator\-expressions(7)\fP manual for available expressions.
|
||
See the \fBcmake\-buildsystem(7)\fP manual for more on defining buildsystem
|
||
properties.
|
||
.SS INTERFACE_SOURCES
|
||
.sp
|
||
List of interface sources to compile into consuming targets.
|
||
.sp
|
||
Targets may populate this property to publish the sources
|
||
for consuming targets to compile. The \fBtarget_sources()\fP command
|
||
populates this property with values given to the \fBPUBLIC\fP and
|
||
\fBINTERFACE\fP keywords. Projects may also get and set the property directly.
|
||
.sp
|
||
When target dependencies are specified using \fBtarget_link_libraries()\fP,
|
||
CMake will read this property from all target dependencies to determine the
|
||
sources of the consumer.
|
||
.sp
|
||
Contents of \fBINTERFACE_SOURCES\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.SS INTERFACE_SYSTEM_INCLUDE_DIRECTORIES
|
||
.sp
|
||
List of public system include directories for a library.
|
||
.sp
|
||
Targets may populate this property to publish the include directories
|
||
which contain system headers, and therefore should not result in
|
||
compiler warnings. The \fBtarget_include_directories(SYSTEM)\fP
|
||
command signature populates this property with values given to the
|
||
\fBPUBLIC\fP and \fBINTERFACE\fP keywords.
|
||
.sp
|
||
Projects may also get and set the property directly, but must be aware that
|
||
adding directories to this property does not make those directories used
|
||
during compilation. Adding directories to this property marks directories
|
||
as \fBSYSTEM\fP which otherwise would be used in a non\-\fBSYSTEM\fP manner. This
|
||
can appear similar to ‘duplication’, so prefer the
|
||
high\-level \fBtarget_include_directories(SYSTEM)\fP command and avoid
|
||
setting the property by low\-level means.
|
||
.sp
|
||
When target dependencies are specified using \fBtarget_link_libraries()\fP,
|
||
CMake will read this property from all target dependencies to mark the
|
||
same include directories as containing system headers.
|
||
.sp
|
||
Contents of \fBINTERFACE_SYSTEM_INCLUDE_DIRECTORIES\fP may use “generator
|
||
expressions” with the syntax \fB$<...>\fP\&. See the
|
||
\fBcmake\-generator\-expressions(7)\fP manual for available expressions.
|
||
See the \fBcmake\-buildsystem(7)\fP manual for more on defining
|
||
buildsystem properties.
|
||
.SS INTERPROCEDURAL_OPTIMIZATION_<CONFIG>
|
||
.sp
|
||
Per\-configuration interprocedural optimization for a target.
|
||
.sp
|
||
This is a per\-configuration version of \fBINTERPROCEDURAL_OPTIMIZATION\fP\&.
|
||
If set, this property overrides the generic property for the named
|
||
configuration.
|
||
.sp
|
||
This property is initialized by the
|
||
\fBCMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>\fP variable if it is set
|
||
when a target is created.
|
||
.SS INTERPROCEDURAL_OPTIMIZATION
|
||
.sp
|
||
Enable interprocedural optimization for a target.
|
||
.sp
|
||
If set to true, enables interprocedural optimizations if they are
|
||
known \fBto be supported\fP by the compiler. Depending
|
||
on value of policy \fBCMP0069\fP, the error will be reported or ignored,
|
||
if interprocedural optimization is enabled but not supported.
|
||
.sp
|
||
This property is initialized by the
|
||
\fBCMAKE_INTERPROCEDURAL_OPTIMIZATION\fP variable if it is set when a
|
||
target is created.
|
||
.SS IOS_INSTALL_COMBINED
|
||
.sp
|
||
Build a combined (device and simulator) target when installing.
|
||
.sp
|
||
When this property is set to set to false (which is the default) then it will
|
||
either be built with the device SDK or the simulator SDK depending on the SDK
|
||
set. But if this property is set to true then the target will at install time
|
||
also be built for the corresponding SDK and combined into one library.
|
||
.sp
|
||
This feature requires at least Xcode version 6.
|
||
.SS JOB_POOL_COMPILE
|
||
.sp
|
||
Ninja only: Pool used for compiling.
|
||
.sp
|
||
The number of parallel compile processes could be limited by defining
|
||
pools with the global \fBJOB_POOLS\fP
|
||
property and then specifying here the pool name.
|
||
.sp
|
||
For instance:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET myexe PROPERTY JOB_POOL_COMPILE ten_jobs)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
This property is initialized by the value of
|
||
\fBCMAKE_JOB_POOL_COMPILE\fP\&.
|
||
.SS JOB_POOL_LINK
|
||
.sp
|
||
Ninja only: Pool used for linking.
|
||
.sp
|
||
The number of parallel link processes could be limited by defining
|
||
pools with the global \fBJOB_POOLS\fP
|
||
property and then specifying here the pool name.
|
||
.sp
|
||
For instance:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET myexe PROPERTY JOB_POOL_LINK two_jobs)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
This property is initialized by the value of \fBCMAKE_JOB_POOL_LINK\fP\&.
|
||
.SS JOB_POOL_PRECOMPILE_HEADER
|
||
.sp
|
||
Ninja only: Pool used for generating pre\-compiled headers.
|
||
.sp
|
||
The number of parallel compile processes could be limited by defining
|
||
pools with the global \fBJOB_POOLS\fP
|
||
property and then specifying here the pool name.
|
||
.sp
|
||
For instance:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET myexe PROPERTY JOB_POOL_PRECOMPILE_HEADER two_jobs)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
This property is initialized by the value of
|
||
\fBCMAKE_JOB_POOL_PRECOMPILE_HEADER\fP\&.
|
||
.sp
|
||
If neither \fI\%JOB_POOL_PRECOMPILE_HEADER\fP nor
|
||
\fBCMAKE_JOB_POOL_PRECOMPILE_HEADER\fP are set then
|
||
\fBJOB_POOL_COMPILE\fP will be used for this task.
|
||
.SS LABELS
|
||
.sp
|
||
Specify a list of text labels associated with a target.
|
||
.sp
|
||
Target label semantics are currently unspecified.
|
||
.SS <LANG>_CLANG_TIDY
|
||
.sp
|
||
This property is implemented only when \fB<LANG>\fP is \fBC\fP or \fBCXX\fP\&.
|
||
.sp
|
||
Specify a semicolon\-separated list containing a command
|
||
line for the \fBclang\-tidy\fP tool. The Makefile Generators
|
||
and the \fBNinja\fP generator will run this tool along with the
|
||
compiler and report a warning if the tool reports any problems.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_<LANG>_CLANG_TIDY\fP variable if it is set
|
||
when a target is created.
|
||
.SS <LANG>_COMPILER_LAUNCHER
|
||
.sp
|
||
This property is implemented only when \fB<LANG>\fP is \fBC\fP, \fBCXX\fP,
|
||
\fBFortran\fP, \fBOBJC\fP, \fBOBJCXX\fP, or \fBCUDA\fP\&.
|
||
.sp
|
||
Specify a semicolon\-separated list containing a command line
|
||
for a compiler launching tool. The Makefile Generators and the
|
||
\fBNinja\fP generator will run this tool and pass the compiler and
|
||
its arguments to the tool. Some example tools are distcc and ccache.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_<LANG>_COMPILER_LAUNCHER\fP variable if it is set
|
||
when a target is created.
|
||
.SS <LANG>_CPPCHECK
|
||
.sp
|
||
This property is supported only when \fB<LANG>\fP is \fBC\fP or \fBCXX\fP\&.
|
||
.sp
|
||
Specify a semicolon\-separated list containing a command line
|
||
for the \fBcppcheck\fP static analysis tool. The Makefile Generators
|
||
and the \fBNinja\fP generator will run \fBcppcheck\fP along with the
|
||
compiler and report any problems. If the command\-line specifies the
|
||
exit code options to \fBcppcheck\fP then the build will fail if the
|
||
tool returns non\-zero.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_<LANG>_CPPCHECK\fP variable if it is set when a target is
|
||
created.
|
||
.SS <LANG>_CPPLINT
|
||
.sp
|
||
This property is supported only when \fB<LANG>\fP is \fBC\fP or \fBCXX\fP\&.
|
||
.sp
|
||
Specify a semicolon\-separated list containing a command line
|
||
for the \fBcpplint\fP style checker. The Makefile Generators and the
|
||
\fBNinja\fP generator will run \fBcpplint\fP along with the compiler
|
||
and report any problems.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_<LANG>_CPPLINT\fP variable if it is set when a target is
|
||
created.
|
||
.SS <LANG>_INCLUDE_WHAT_YOU_USE
|
||
.sp
|
||
This property is implemented only when \fB<LANG>\fP is \fBC\fP or \fBCXX\fP\&.
|
||
.sp
|
||
Specify a semicolon\-separated list containing a command
|
||
line for the \fBinclude\-what\-you\-use\fP tool. The Makefile Generators
|
||
and the \fBNinja\fP generator will run this tool along with the
|
||
compiler and report a warning if the tool reports any problems.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_<LANG>_INCLUDE_WHAT_YOU_USE\fP variable if it is set
|
||
when a target is created.
|
||
.SS <LANG>_VISIBILITY_PRESET
|
||
.sp
|
||
Value for symbol visibility compile flags
|
||
.sp
|
||
The \fB<LANG>_VISIBILITY_PRESET\fP property determines the value passed in a
|
||
visibility related compile option, such as \fB\-fvisibility=\fP for \fB<LANG>\fP\&.
|
||
This property affects compilation in sources of all types of targets
|
||
(subject to policy \fBCMP0063\fP).
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_<LANG>_VISIBILITY_PRESET\fP variable if it is set when a
|
||
target is created.
|
||
.SS LIBRARY_OUTPUT_DIRECTORY_<CONFIG>
|
||
.sp
|
||
Per\-configuration output directory for
|
||
LIBRARY target files.
|
||
.sp
|
||
This is a per\-configuration version of the
|
||
\fBLIBRARY_OUTPUT_DIRECTORY\fP target property, but
|
||
multi\-configuration generators (Visual Studio Generators,
|
||
\fBXcode\fP) do NOT append a
|
||
per\-configuration subdirectory to the specified directory. This
|
||
property is initialized by the value of the
|
||
\fBCMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG>\fP variable if
|
||
it is set when a target is created.
|
||
.sp
|
||
Contents of \fBLIBRARY_OUTPUT_DIRECTORY_<CONFIG>\fP may use
|
||
\fBgenerator expressions\fP\&.
|
||
.SS LIBRARY_OUTPUT_DIRECTORY
|
||
.sp
|
||
Output directory in which to build LIBRARY target files.
|
||
.sp
|
||
This property specifies the directory into which library target files
|
||
should be built. The property value may use
|
||
\fBgenerator expressions\fP\&.
|
||
Multi\-configuration generators (VS, Xcode) append a per\-configuration
|
||
subdirectory to the specified directory unless a generator expression
|
||
is used.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
CMAKE_LIBRARY_OUTPUT_DIRECTORY if it is set when a target is created.
|
||
.sp
|
||
See also the \fBLIBRARY_OUTPUT_DIRECTORY_<CONFIG>\fP target property.
|
||
.SS LIBRARY_OUTPUT_NAME_<CONFIG>
|
||
.sp
|
||
Per\-configuration output name for
|
||
LIBRARY target files.
|
||
.sp
|
||
This is the configuration\-specific version of the
|
||
\fBLIBRARY_OUTPUT_NAME\fP target property.
|
||
.SS LIBRARY_OUTPUT_NAME
|
||
.sp
|
||
Output name for LIBRARY target files.
|
||
.sp
|
||
This property specifies the base name for library target files. It
|
||
overrides \fBOUTPUT_NAME\fP and \fBOUTPUT_NAME_<CONFIG>\fP
|
||
properties.
|
||
.sp
|
||
See also the \fBLIBRARY_OUTPUT_NAME_<CONFIG>\fP target property.
|
||
.SS LINK_DEPENDS_NO_SHARED
|
||
.sp
|
||
Do not depend on linked shared library files.
|
||
.sp
|
||
Set this property to true to tell CMake generators not to add
|
||
file\-level dependencies on the shared library files linked by this
|
||
target. Modification to the shared libraries will not be sufficient
|
||
to re\-link this target. Logical target\-level dependencies will not be
|
||
affected so the linked shared libraries will still be brought up to
|
||
date before this target is built.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
CMAKE_LINK_DEPENDS_NO_SHARED if it is set when a target is created.
|
||
.SS LINK_DEPENDS
|
||
.sp
|
||
Additional files on which a target binary depends for linking.
|
||
.sp
|
||
Specifies a semicolon\-separated list of full\-paths to files on which
|
||
the link rule for this target depends. The target binary will be
|
||
linked if any of the named files is newer than it.
|
||
.sp
|
||
This property is supported only by \fBNinja\fP and
|
||
Makefile Generators\&. It is
|
||
intended to specify dependencies on “linker scripts” for custom Makefile link
|
||
rules.
|
||
.sp
|
||
Contents of \fBLINK_DEPENDS\fP may use “generator expressions” with
|
||
the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.SS LINKER_LANGUAGE
|
||
.sp
|
||
Specifies language whose compiler will invoke the linker.
|
||
.sp
|
||
For executables, shared libraries, and modules, this sets the language
|
||
whose compiler is used to link the target (such as “C” or “CXX”). A
|
||
typical value for an executable is the language of the source file
|
||
providing the program entry point (main). If not set, the language
|
||
with the highest linker preference value is the default. See
|
||
documentation of \fBCMAKE_<LANG>_LINKER_PREFERENCE\fP variables.
|
||
.sp
|
||
If this property is not set by the user, it will be calculated at
|
||
generate\-time by CMake.
|
||
.SS LINK_DIRECTORIES
|
||
.sp
|
||
List of directories to use for the link step of shared library, module
|
||
and executable targets.
|
||
.sp
|
||
This property holds a semicolon\-separated list of directories
|
||
specified so far for its target. Use the \fBtarget_link_directories()\fP
|
||
command to append more search directories.
|
||
.sp
|
||
This property is initialized by the \fBLINK_DIRECTORIES\fP directory
|
||
property when a target is created, and is used by the generators to set
|
||
the search directories for the linker.
|
||
.sp
|
||
Contents of \fBLINK_DIRECTORIES\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. See the \fBcmake\-buildsystem(7)\fP manual
|
||
for more on defining buildsystem properties.
|
||
.SS LINK_FLAGS_<CONFIG>
|
||
.sp
|
||
Per\-configuration linker flags for a \fBSHARED\fP library, \fBMODULE\fP or
|
||
\fBEXECUTABLE\fP target.
|
||
.sp
|
||
This is the configuration\-specific version of \fBLINK_FLAGS\fP\&.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property has been superseded by \fBLINK_OPTIONS\fP property.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS LINK_FLAGS
|
||
.sp
|
||
Additional flags to use when linking this target if it is a shared library,
|
||
module library, or an executable. Static libraries need to use
|
||
\fBSTATIC_LIBRARY_OPTIONS\fP or \fBSTATIC_LIBRARY_FLAGS\fP
|
||
properties.
|
||
.sp
|
||
The \fBLINK_FLAGS\fP property, managed as a string, can be used to add extra
|
||
flags to the link step of a target. \fBLINK_FLAGS_<CONFIG>\fP will add
|
||
to the configuration \fB<CONFIG>\fP, for example, \fBDEBUG\fP, \fBRELEASE\fP,
|
||
\fBMINSIZEREL\fP, \fBRELWITHDEBINFO\fP, …
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property has been superseded by \fBLINK_OPTIONS\fP property.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS LINK_INTERFACE_LIBRARIES_<CONFIG>
|
||
.sp
|
||
Per\-configuration list of public interface libraries for a target.
|
||
.sp
|
||
This is the configuration\-specific version of
|
||
\fBLINK_INTERFACE_LIBRARIES\fP\&. If set, this property completely
|
||
overrides the generic property for the named configuration.
|
||
.sp
|
||
This property is overridden by the \fBINTERFACE_LINK_LIBRARIES\fP
|
||
property if policy \fBCMP0022\fP is \fBNEW\fP\&.
|
||
.sp
|
||
This property is deprecated. Use \fBINTERFACE_LINK_LIBRARIES\fP
|
||
instead.
|
||
.SS Creating Relocatable Packages
|
||
.sp
|
||
Note that it is not advisable to populate the
|
||
\fBLINK_INTERFACE_LIBRARIES_<CONFIG>\fP of a target with absolute paths to dependencies.
|
||
That would hard\-code into installed packages the library file paths
|
||
for dependencies \fBas found on the machine the package was made on\fP\&.
|
||
.sp
|
||
See the Creating Relocatable Packages section of the
|
||
\fBcmake\-packages(7)\fP manual for discussion of additional care
|
||
that must be taken when specifying usage requirements while creating
|
||
packages for redistribution.
|
||
.SS LINK_INTERFACE_LIBRARIES
|
||
.sp
|
||
List public interface libraries for a shared library or executable.
|
||
.sp
|
||
By default linking to a shared library target transitively links to
|
||
targets with which the library itself was linked. For an executable
|
||
with exports (see the \fBENABLE_EXPORTS\fP target property) no
|
||
default transitive link dependencies are used. This property replaces the default
|
||
transitive link dependencies with an explicit list. When the target
|
||
is linked into another target using the \fBtarget_link_libraries()\fP
|
||
command, the libraries listed (and recursively
|
||
their link interface libraries) will be provided to the other target
|
||
also. If the list is empty then no transitive link dependencies will
|
||
be incorporated when this target is linked into another target even if
|
||
the default set is non\-empty. This property is initialized by the
|
||
value of the \fBCMAKE_LINK_INTERFACE_LIBRARIES\fP variable if it is
|
||
set when a target is created. This property is ignored for \fBSTATIC\fP
|
||
libraries.
|
||
.sp
|
||
This property is overridden by the \fBINTERFACE_LINK_LIBRARIES\fP
|
||
property if policy \fBCMP0022\fP is \fBNEW\fP\&.
|
||
.sp
|
||
This property is deprecated. Use \fBINTERFACE_LINK_LIBRARIES\fP
|
||
instead.
|
||
.SS Creating Relocatable Packages
|
||
.sp
|
||
Note that it is not advisable to populate the
|
||
\fBLINK_INTERFACE_LIBRARIES\fP of a target with absolute paths to dependencies.
|
||
That would hard\-code into installed packages the library file paths
|
||
for dependencies \fBas found on the machine the package was made on\fP\&.
|
||
.sp
|
||
See the Creating Relocatable Packages section of the
|
||
\fBcmake\-packages(7)\fP manual for discussion of additional care
|
||
that must be taken when specifying usage requirements while creating
|
||
packages for redistribution.
|
||
.SS LINK_INTERFACE_MULTIPLICITY_<CONFIG>
|
||
.sp
|
||
Per\-configuration repetition count for cycles of \fBSTATIC\fP libraries.
|
||
.sp
|
||
This is the configuration\-specific version of
|
||
\fBLINK_INTERFACE_MULTIPLICITY\fP\&. If set, this property completely
|
||
overrides the generic property for the named configuration.
|
||
.SS LINK_INTERFACE_MULTIPLICITY
|
||
.sp
|
||
Repetition count for \fBSTATIC\fP libraries with cyclic dependencies.
|
||
.sp
|
||
When linking to a \fBSTATIC\fP library target with cyclic dependencies the
|
||
linker may need to scan more than once through the archives in the
|
||
strongly connected component of the dependency graph. CMake by
|
||
default constructs the link line so that the linker will scan through
|
||
the component at least twice. This property specifies the minimum
|
||
number of scans if it is larger than the default. CMake uses the
|
||
largest value specified by any target in a component.
|
||
.SS LINK_LIBRARIES
|
||
.sp
|
||
List of direct link dependencies.
|
||
.sp
|
||
This property specifies the list of libraries or targets which will be
|
||
used for linking. In addition to accepting values from the
|
||
\fBtarget_link_libraries()\fP command, values may be set directly on
|
||
any target using the \fBset_property()\fP command.
|
||
.sp
|
||
The value of this property is used by the generators to set the link
|
||
libraries for the compiler.
|
||
.sp
|
||
Contents of \fBLINK_LIBRARIES\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. See the \fBcmake\-buildsystem(7)\fP manual
|
||
for more on defining buildsystem properties.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
A call to \fBtarget_link_libraries(<target> ...)\fP may update this
|
||
property on \fB<target>\fP\&. If \fB<target>\fP was not created in the same
|
||
directory as the call then \fBtarget_link_libraries()\fP will wrap each
|
||
entry with the form \fB::@(directory\-id);...;::@\fP, where the \fB::@\fP is
|
||
literal and the \fB(directory\-id)\fP is unspecified.
|
||
This tells the generators that the named libraries must be looked up in
|
||
the scope of the caller rather than in the scope in which the
|
||
\fB<target>\fP was created. Valid directory ids are stripped on export
|
||
by the \fBinstall(EXPORT)\fP and \fBexport()\fP commands.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS LINK_OPTIONS
|
||
.sp
|
||
List of options to use for the link step of shared library, module
|
||
and executable targets as well as the device link step. Targets that are static
|
||
libraries need to use the \fBSTATIC_LIBRARY_OPTIONS\fP target property.
|
||
.sp
|
||
These options are used for both normal linking and device linking
|
||
(see policy \fBCMP0105\fP). To control link options for normal and device
|
||
link steps, \fB$<HOST_LINK>\fP and \fB$<DEVICE_LINK>\fP
|
||
\fBgenerator expressions\fP can be used.
|
||
.sp
|
||
This property holds a semicolon\-separated list of
|
||
options specified so far for its target. Use the \fBtarget_link_options()\fP
|
||
command to append more options.
|
||
.sp
|
||
This property is initialized by the \fBLINK_OPTIONS\fP directory
|
||
property when a target is created, and is used by the generators to set
|
||
the options for the compiler.
|
||
.sp
|
||
Contents of \fBLINK_OPTIONS\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. See the \fBcmake\-buildsystem(7)\fP manual
|
||
for more on defining buildsystem properties.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property must be used in preference to \fBLINK_FLAGS\fP property.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS LINK_SEARCH_END_STATIC
|
||
.sp
|
||
End a link line such that static system libraries are used.
|
||
.sp
|
||
Some linkers support switches such as \fB\-Bstatic\fP and \fB\-Bdynamic\fP to
|
||
determine whether to use static or shared libraries for \fB\-lXXX\fP options.
|
||
CMake uses these options to set the link type for libraries whose full
|
||
paths are not known or (in some cases) are in implicit link
|
||
directories for the platform. By default CMake adds an option at the
|
||
end of the library list (if necessary) to set the linker search type
|
||
back to its starting type. This property switches the final linker
|
||
search type to \fB\-Bstatic\fP regardless of how it started.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_LINK_SEARCH_END_STATIC\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
See also \fBLINK_SEARCH_START_STATIC\fP\&.
|
||
.SS LINK_SEARCH_START_STATIC
|
||
.sp
|
||
Assume the linker looks for static libraries by default.
|
||
.sp
|
||
Some linkers support switches such as \fB\-Bstatic\fP and \fB\-Bdynamic\fP to
|
||
determine whether to use static or shared libraries for \fB\-lXXX\fP options.
|
||
CMake uses these options to set the link type for libraries whose full
|
||
paths are not known or (in some cases) are in implicit link
|
||
directories for the platform. By default the linker search type is
|
||
assumed to be \fB\-Bdynamic\fP at the beginning of the library list. This
|
||
property switches the assumption to \fB\-Bstatic\fP\&. It is intended for use
|
||
when linking an executable statically (e.g. with the GNU \fB\-static\fP
|
||
option).
|
||
.INDENT 0.0
|
||
.TP
|
||
.B This property is initialized by the value of the variable
|
||
\fBCMAKE_LINK_SEARCH_START_STATIC\fP if it is set
|
||
when a target is created.
|
||
.UNINDENT
|
||
.sp
|
||
See also \fBLINK_SEARCH_END_STATIC\fP\&.
|
||
.SS LINK_WHAT_YOU_USE
|
||
.sp
|
||
This is a boolean option that when set to \fBTRUE\fP will automatically run
|
||
\fBldd \-r \-u\fP on the target after it is linked. In addition, the linker flag
|
||
\fB\-Wl,\-\-no\-as\-needed\fP will be passed to the target with the link command so
|
||
that all libraries specified on the command line will be linked into the
|
||
target. This will result in the link producing a list of libraries that
|
||
provide no symbols used by this target but are being linked to it.
|
||
This is only applicable to executable and shared library targets and
|
||
will only work when ld and ldd accept the flags used.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_LINK_WHAT_YOU_USE\fP variable if it is set
|
||
when a target is created.
|
||
.SS LOCATION_<CONFIG>
|
||
.sp
|
||
Read\-only property providing a target location on disk.
|
||
.sp
|
||
A read\-only property that indicates where a target’s main file is
|
||
located on disk for the configuration \fB<CONFIG>\fP\&. The property is
|
||
defined only for library and executable targets. An imported target
|
||
may provide a set of configurations different from that of the
|
||
importing project. By default CMake looks for an exact\-match but
|
||
otherwise uses an arbitrary available configuration. Use the
|
||
\fBMAP_IMPORTED_CONFIG_<CONFIG>\fP property to map imported
|
||
configurations explicitly.
|
||
.sp
|
||
Do not set properties that affect the location of a target after
|
||
reading this property. These include properties whose names match
|
||
\fB(RUNTIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?\fP,
|
||
\fB(IMPLIB_)?(PREFIX|SUFFIX)\fP, or \fBLINKER_LANGUAGE\fP\&.
|
||
Failure to follow this rule is not diagnosed and leaves
|
||
the location of the target undefined.
|
||
.SS LOCATION
|
||
.sp
|
||
Read\-only location of a target on disk.
|
||
.sp
|
||
For an imported target, this read\-only property returns the value of
|
||
the \fBLOCATION_<CONFIG>\fP property for an unspecified configuration
|
||
\fB<CONFIG>\fP provided by the target.
|
||
.sp
|
||
For a non\-imported target, this property is provided for compatibility
|
||
with CMake 2.4 and below. It was meant to get the location of an
|
||
executable target’s output file for use in \fBadd_custom_command()\fP\&. The
|
||
path may contain a build\-system\-specific portion that is replaced at
|
||
build time with the configuration getting built (such as
|
||
\fB$(ConfigurationName)\fP in VS). In CMake 2.6 and above
|
||
\fBadd_custom_command()\fP automatically recognizes a target name in its
|
||
\fBCOMMAND\fP and \fBDEPENDS\fP options and computes the target location. In
|
||
CMake 2.8.4 and above \fBadd_custom_command()\fP recognizes
|
||
\fBgenerator expressions\fP
|
||
to refer to target locations anywhere in the command.
|
||
Therefore this property is not needed for creating custom commands.
|
||
.sp
|
||
Do not set properties that affect the location of a target after
|
||
reading this property. These include properties whose names match
|
||
\fB(RUNTIME|LIBRARY|ARCHIVE)_OUTPUT_(NAME|DIRECTORY)(_<CONFIG>)?\fP,
|
||
\fB(IMPLIB_)?(PREFIX|SUFFIX)\fP, or “LINKER_LANGUAGE”. Failure to follow
|
||
this rule is not diagnosed and leaves the location of the target
|
||
undefined.
|
||
.SS MACHO_COMPATIBILITY_VERSION
|
||
.sp
|
||
What compatibility version number is this target for Mach\-O binaries.
|
||
.sp
|
||
For shared libraries on Mach\-O systems (e.g. macOS, iOS)
|
||
the \fBMACHO_COMPATIBILITY_VERSION\fP property corresponds to the
|
||
\fIcompatibility version\fP and \fBMACHO_CURRENT_VERSION\fP corresponds to
|
||
the \fIcurrent version\fP\&. These are both embedded in the shared library binary
|
||
and can be checked with the \fBotool \-L <binary>\fP command.
|
||
.sp
|
||
It should be noted that the \fBMACHO_CURRENT_VERSION\fP and
|
||
\fBMACHO_COMPATIBILITY_VERSION\fP properties do not affect the file
|
||
names or version\-related symlinks that CMake generates for the library.
|
||
The \fBVERSION\fP and \fBSOVERSION\fP target properties still
|
||
control the file and symlink names. The \fBinstall_name\fP is also still
|
||
controlled by \fBSOVERSION\fP\&.
|
||
.sp
|
||
When \fBMACHO_CURRENT_VERSION\fP and \fBMACHO_COMPATIBILITY_VERSION\fP
|
||
are not given, \fBVERSION\fP and \fBSOVERSION\fP are used for
|
||
the version details to be embedded in the binaries respectively.
|
||
The \fBMACHO_CURRENT_VERSION\fP and \fBMACHO_COMPATIBILITY_VERSION\fP
|
||
properties only need to be given if the project needs to decouple the file
|
||
and symlink naming from the version details embedded in the binaries
|
||
(e.g. to match libtool conventions).
|
||
.SS MACHO_CURRENT_VERSION
|
||
.sp
|
||
What current version number is this target for Mach\-O binaries.
|
||
.sp
|
||
For shared libraries on Mach\-O systems (e.g. macOS, iOS)
|
||
the \fBMACHO_COMPATIBILITY_VERSION\fP property corresponds to the
|
||
\fIcompatibility version\fP and \fBMACHO_CURRENT_VERSION\fP corresponds to the
|
||
\fIcurrent version\fP\&. These are both embedded in the shared library binary
|
||
and can be checked with the \fBotool \-L <binary>\fP command.
|
||
.sp
|
||
It should be noted that the \fBMACHO_CURRENT_VERSION\fP and
|
||
\fBMACHO_COMPATIBILITY_VERSION\fP properties do not affect the file
|
||
names or version\-related symlinks that CMake generates for the library.
|
||
The \fBVERSION\fP and \fBSOVERSION\fP target properties still
|
||
control the file and symlink names. The \fBinstall_name\fP is also still
|
||
controlled by \fBSOVERSION\fP\&.
|
||
.sp
|
||
When \fBMACHO_CURRENT_VERSION\fP and \fBMACHO_COMPATIBILITY_VERSION\fP
|
||
are not given, \fBVERSION\fP and \fBSOVERSION\fP are used for
|
||
the version details to be embedded in the binaries respectively.
|
||
The \fBMACHO_CURRENT_VERSION\fP and \fBMACHO_COMPATIBILITY_VERSION\fP
|
||
properties only need to be given if the project needs to decouple the file
|
||
and symlink naming from the version details embedded in the binaries
|
||
(e.g. to match libtool conventions).
|
||
.SS MACOSX_BUNDLE_INFO_PLIST
|
||
.sp
|
||
Specify a custom \fBInfo.plist\fP template for a macOS and iOS Application Bundle.
|
||
.sp
|
||
An executable target with \fBMACOSX_BUNDLE\fP enabled will be built as an
|
||
application bundle on macOS. By default its \fBInfo.plist\fP file is created
|
||
by configuring a template called \fBMacOSXBundleInfo.plist.in\fP located in the
|
||
\fBCMAKE_MODULE_PATH\fP\&. This property specifies an alternative template
|
||
file name which may be a full path.
|
||
.sp
|
||
The following target properties may be set to specify content to be
|
||
configured into the file:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBMACOSX_BUNDLE_BUNDLE_NAME\fP
|
||
Sets \fBCFBundleName\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_BUNDLE_BUNDLE_VERSION\fP
|
||
Sets \fBCFBundleVersion\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_BUNDLE_COPYRIGHT\fP
|
||
Sets \fBNSHumanReadableCopyright\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_BUNDLE_GUI_IDENTIFIER\fP
|
||
Sets \fBCFBundleIdentifier\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_BUNDLE_ICON_FILE\fP
|
||
Sets \fBCFBundleIconFile\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_BUNDLE_INFO_STRING\fP
|
||
Sets \fBCFBundleGetInfoString\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_BUNDLE_LONG_VERSION_STRING\fP
|
||
Sets \fBCFBundleLongVersionString\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_BUNDLE_SHORT_VERSION_STRING\fP
|
||
Sets \fBCFBundleShortVersionString\fP\&.
|
||
.UNINDENT
|
||
.sp
|
||
CMake variables of the same name may be set to affect all targets in a
|
||
directory that do not have each specific property set. If a custom
|
||
\fBInfo.plist\fP is specified by this property it may of course hard\-code
|
||
all the settings instead of using the target properties.
|
||
.SS MACOSX_BUNDLE
|
||
.sp
|
||
Build an executable as an Application Bundle on macOS or iOS.
|
||
.sp
|
||
When this property is set to \fBTRUE\fP the executable when built on macOS
|
||
or iOS will be created as an application bundle. This makes it
|
||
a GUI executable that can be launched from the Finder. See the
|
||
\fBMACOSX_BUNDLE_INFO_PLIST\fP target property for information about
|
||
creation of the \fBInfo.plist\fP file for the application bundle.
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_MACOSX_BUNDLE\fP if it is set when a target is created.
|
||
.SS MACOSX_FRAMEWORK_INFO_PLIST
|
||
.sp
|
||
Specify a custom \fBInfo.plist\fP template for a macOS and iOS Framework.
|
||
.sp
|
||
A library target with \fBFRAMEWORK\fP enabled will be built as a
|
||
framework on macOS. By default its \fBInfo.plist\fP file is created by
|
||
configuring a template called \fBMacOSXFrameworkInfo.plist.in\fP located in the
|
||
\fBCMAKE_MODULE_PATH\fP\&. This property specifies an alternative template
|
||
file name which may be a full path.
|
||
.sp
|
||
The following target properties may be set to specify content to be
|
||
configured into the file:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBMACOSX_FRAMEWORK_BUNDLE_VERSION\fP
|
||
Sets \fBCFBundleVersion\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_FRAMEWORK_ICON_FILE\fP
|
||
Sets \fBCFBundleIconFile\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_FRAMEWORK_IDENTIFIER\fP
|
||
Sets \fBCFBundleIdentifier\fP\&.
|
||
.TP
|
||
.B \fBMACOSX_FRAMEWORK_SHORT_VERSION_STRING\fP
|
||
Sets \fBCFBundleShortVersionString\fP\&.
|
||
.UNINDENT
|
||
.sp
|
||
CMake variables of the same name may be set to affect all targets in a
|
||
directory that do not have each specific property set. If a custom
|
||
\fBInfo.plist\fP is specified by this property it may of course hard\-code
|
||
all the settings instead of using the target properties.
|
||
.SS MACOSX_RPATH
|
||
.sp
|
||
Whether this target on macOS or iOS is located at runtime using rpaths.
|
||
.sp
|
||
When this property is set to \fBTRUE\fP, the directory portion of
|
||
the \fBinstall_name\fP field of this shared library will be \fB@rpath\fP
|
||
unless overridden by \fBINSTALL_NAME_DIR\fP\&. This indicates
|
||
the shared library is to be found at runtime using runtime
|
||
paths (rpaths).
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_MACOSX_RPATH\fP if it is set when a target is
|
||
created.
|
||
.sp
|
||
Runtime paths will also be embedded in binaries using this target and
|
||
can be controlled by the \fBINSTALL_RPATH\fP target property on
|
||
the target linking to this target.
|
||
.sp
|
||
Policy \fBCMP0042\fP was introduced to change the default value of
|
||
\fBMACOSX_RPATH\fP to \fBTRUE\fP\&. This is because use of \fB@rpath\fP is a
|
||
more flexible and powerful alternative to \fB@executable_path\fP and
|
||
\fB@loader_path\fP\&.
|
||
.SS MANUALLY_ADDED_DEPENDENCIES
|
||
.sp
|
||
Get manually added dependencies to other top\-level targets.
|
||
.sp
|
||
This read\-only property can be used to query all dependencies that
|
||
were added for this target with the \fBadd_dependencies()\fP
|
||
command.
|
||
.SS MAP_IMPORTED_CONFIG_<CONFIG>
|
||
.sp
|
||
Map from project configuration to
|
||
imported target’s configuration.
|
||
.sp
|
||
Set this to the list of configurations of an imported target that may
|
||
be used for the current project’s \fB<CONFIG>\fP configuration. Targets
|
||
imported from another project may not provide the same set of
|
||
configuration names available in the current project. Setting this
|
||
property tells CMake what imported configurations are suitable for use
|
||
when building the \fB<CONFIG>\fP configuration. The first configuration in
|
||
the list found to be provided by the imported target (i.e. via
|
||
\fBIMPORTED_LOCATION_<CONFIG>\fP for the mapped\-to \fB<CONFIG>\fP)
|
||
is selected. As a special case, an empty list element refers to the
|
||
configuration\-less imported target location
|
||
(i.e. \fBIMPORTED_LOCATION\fP).
|
||
.sp
|
||
If this property is set and no matching configurations are available,
|
||
then the imported target is considered to be not found. This property
|
||
is ignored for non\-imported targets.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_MAP_IMPORTED_CONFIG_<CONFIG>\fP variable if it is set when a
|
||
target is created.
|
||
.SS Example
|
||
.sp
|
||
For example creating imported C++ library \fBfoo\fP:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_library(foo STATIC IMPORTED)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Use \fBfoo_debug\fP path for \fBDebug\fP build type:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(
|
||
TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG
|
||
)
|
||
|
||
set_target_properties(foo PROPERTIES
|
||
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
|
||
IMPORTED_LOCATION_DEBUG "${foo_debug}"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Use \fBfoo_release\fP path for \fBRelease\fP build type:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(
|
||
TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE
|
||
)
|
||
|
||
set_target_properties(foo PROPERTIES
|
||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
|
||
IMPORTED_LOCATION_RELEASE "${foo_release}"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Use \fBRelease\fP version of library for \fBMinSizeRel\fP and \fBRelWithDebInfo\fP
|
||
build types:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_target_properties(foo PROPERTIES
|
||
MAP_IMPORTED_CONFIG_MINSIZEREL Release
|
||
MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS MSVC_RUNTIME_LIBRARY
|
||
.sp
|
||
Select the MSVC runtime library for use by compilers targeting the MSVC ABI.
|
||
.sp
|
||
The allowed values are:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBMultiThreaded\fP
|
||
Compile with \fB\-MT\fP or equivalent flag(s) to use a multi\-threaded
|
||
statically\-linked runtime library.
|
||
.TP
|
||
.B \fBMultiThreadedDLL\fP
|
||
Compile with \fB\-MD\fP or equivalent flag(s) to use a multi\-threaded
|
||
dynamically\-linked runtime library.
|
||
.TP
|
||
.B \fBMultiThreadedDebug\fP
|
||
Compile with \fB\-MTd\fP or equivalent flag(s) to use a multi\-threaded
|
||
statically\-linked runtime library.
|
||
.TP
|
||
.B \fBMultiThreadedDebugDLL\fP
|
||
Compile with \fB\-MDd\fP or equivalent flag(s) to use a multi\-threaded
|
||
dynamically\-linked runtime library.
|
||
.UNINDENT
|
||
.sp
|
||
The value is ignored on non\-MSVC compilers but an unsupported value will
|
||
be rejected as an error when using a compiler targeting the MSVC ABI.
|
||
.sp
|
||
The value may also be the empty string (\fB""\fP) in which case no runtime
|
||
library selection flag will be added explicitly by CMake. Note that with
|
||
Visual Studio Generators the native build system may choose to
|
||
add its own default runtime library selection flag.
|
||
.sp
|
||
Use \fBgenerator expressions\fP to
|
||
support per\-configuration specification. For example, the code:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_executable(foo foo.c)
|
||
set_property(TARGET foo PROPERTY
|
||
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
selects for the target \fBfoo\fP a multi\-threaded statically\-linked runtime
|
||
library with or without debug information depending on the configuration.
|
||
.sp
|
||
If this property is not set then CMake uses the default value
|
||
\fBMultiThreaded$<$<CONFIG:Debug>:Debug>DLL\fP to select a MSVC runtime library.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property has effect only when policy \fBCMP0091\fP is set to \fBNEW\fP
|
||
prior to the first \fBproject()\fP or \fBenable_language()\fP command
|
||
that enables a language using a compiler targeting the MSVC ABI.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS NAME
|
||
.sp
|
||
Logical name for the target.
|
||
.sp
|
||
Read\-only logical name for the target as used by CMake.
|
||
.SS NO_SONAME
|
||
.sp
|
||
Whether to set \fBsoname\fP when linking a shared library.
|
||
.sp
|
||
Enable this boolean property if a generated \fBSHARED\fP library
|
||
should not have \fBsoname\fP set. Default is to set \fBsoname\fP on all
|
||
shared libraries as long as the platform supports it.
|
||
Generally, use this property only for leaf private libraries or
|
||
plugins. If you use it on normal shared libraries which other targets
|
||
link against, on some platforms a linker will insert a full path to
|
||
the library (as specified at link time) into the dynamic section of
|
||
the dependent binary. Therefore, once installed, dynamic loader may
|
||
eventually fail to locate the library for the binary.
|
||
.SS NO_SYSTEM_FROM_IMPORTED
|
||
.sp
|
||
Do not treat include directories from the interfaces of consumed
|
||
imported targets as \fBSYSTEM\fP\&.
|
||
.sp
|
||
The contents of the \fBINTERFACE_INCLUDE_DIRECTORIES\fP target property
|
||
of imported targets are treated as \fBSYSTEM\fP includes by default. If this
|
||
property is enabled on a target, compilation of sources in that target will
|
||
not treat the contents of the \fBINTERFACE_INCLUDE_DIRECTORIES\fP of consumed
|
||
imported targets as system includes.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_NO_SYSTEM_FROM_IMPORTED\fP variable if it is set when a target
|
||
is created.
|
||
.SS OBJC_EXTENSIONS
|
||
.sp
|
||
Boolean specifying whether compiler specific extensions are requested.
|
||
.sp
|
||
This property specifies whether compiler specific extensions should be
|
||
used. For some compilers, this results in adding a flag such
|
||
as \fB\-std=gnu11\fP instead of \fB\-std=c11\fP to the compile line. This
|
||
property is \fBON\fP by default. The basic OBJC standard level is
|
||
controlled by the \fBOBJC_STANDARD\fP target property.
|
||
.sp
|
||
If the property is not set, and the project has set the \fBC_EXTENSIONS\fP,
|
||
the value of \fBC_EXTENSIONS\fP is set for \fI\%OBJC_EXTENSIONS\fP\&.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_OBJC_EXTENSIONS\fP variable if it is set when a target
|
||
is created.
|
||
.SS OBJC_STANDARD
|
||
.sp
|
||
The OBJC standard whose features are requested to build this target.
|
||
.sp
|
||
This property specifies the OBJC standard whose features are requested
|
||
to build this target. For some compilers, this results in adding a
|
||
flag such as \fB\-std=gnu11\fP to the compile line.
|
||
.sp
|
||
Supported values are \fB90\fP, \fB99\fP and \fB11\fP\&.
|
||
.sp
|
||
If the value requested does not result in a compile flag being added for
|
||
the compiler in use, a previous standard flag will be added instead. This
|
||
means that using:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET tgt PROPERTY OBJC_STANDARD 11)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
with a compiler which does not support \fB\-std=gnu11\fP or an equivalent
|
||
flag will not result in an error or warning, but will instead add the
|
||
\fB\-std=gnu99\fP or \fB\-std=gnu90\fP flag if supported. This “decay” behavior may
|
||
be controlled with the \fBOBJC_STANDARD_REQUIRED\fP target property.
|
||
Additionally, the \fBOBJC_EXTENSIONS\fP target property may be used to
|
||
control whether compiler\-specific extensions are enabled on a per\-target basis.
|
||
.sp
|
||
If the property is not set, and the project has set the \fBC_STANDARD\fP,
|
||
the value of \fBC_STANDARD\fP is set for \fI\%OBJC_STANDARD\fP\&.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_OBJC_STANDARD\fP variable if it is set when a target
|
||
is created.
|
||
.SS OBJC_STANDARD_REQUIRED
|
||
.sp
|
||
Boolean describing whether the value of \fBOBJC_STANDARD\fP is a requirement.
|
||
.sp
|
||
If this property is set to \fBON\fP, then the value of the
|
||
\fBOBJC_STANDARD\fP target property is treated as a requirement. If this
|
||
property is \fBOFF\fP or unset, the \fBOBJC_STANDARD\fP target property is
|
||
treated as optional and may “decay” to a previous standard if the requested is
|
||
not available.
|
||
.sp
|
||
If the property is not set, and the project has set the \fBC_STANDARD_REQUIRED\fP,
|
||
the value of \fBC_STANDARD_REQUIRED\fP is set for \fI\%OBJC_STANDARD_REQUIRED\fP\&.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_OBJC_STANDARD_REQUIRED\fP variable if it is set when a
|
||
target is created.
|
||
.SS OBJCXX_EXTENSIONS
|
||
.sp
|
||
Boolean specifying whether compiler specific extensions are requested.
|
||
.sp
|
||
This property specifies whether compiler specific extensions should be
|
||
used. For some compilers, this results in adding a flag such
|
||
as \fB\-std=gnu++11\fP instead of \fB\-std=c++11\fP to the compile line. This
|
||
property is \fBON\fP by default. The basic ObjC++ standard level is
|
||
controlled by the \fBOBJCXX_STANDARD\fP target property.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
If the property is not set, and the project has set the \fBCXX_EXTENSIONS\fP,
|
||
the value of \fBCXX_EXTENSIONS\fP is set for \fI\%OBJCXX_EXTENSIONS\fP\&.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_OBJCXX_EXTENSIONS\fP variable if it is set when a target
|
||
is created.
|
||
.SS OBJCXX_STANDARD
|
||
.sp
|
||
The ObjC++ standard whose features are requested to build this target.
|
||
.sp
|
||
This property specifies the ObjC++ standard whose features are requested
|
||
to build this target. For some compilers, this results in adding a
|
||
flag such as \fB\-std=gnu++11\fP to the compile line.
|
||
.sp
|
||
Supported values are \fB98\fP, \fB11\fP, \fB14\fP, \fB17\fP, and \fB20\fP\&.
|
||
.sp
|
||
If the value requested does not result in a compile flag being added for
|
||
the compiler in use, a previous standard flag will be added instead. This
|
||
means that using:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET tgt PROPERTY OBJCXX_STANDARD 11)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
with a compiler which does not support \fB\-std=gnu++11\fP or an equivalent
|
||
flag will not result in an error or warning, but will instead add the
|
||
\fB\-std=gnu++98\fP flag if supported. This “decay” behavior may be controlled
|
||
with the \fBOBJCXX_STANDARD_REQUIRED\fP target property.
|
||
Additionally, the \fBOBJCXX_EXTENSIONS\fP target property may be used to
|
||
control whether compiler\-specific extensions are enabled on a per\-target basis.
|
||
.sp
|
||
If the property is not set, and the project has set the \fBCXX_STANDARD\fP,
|
||
the value of \fBCXX_STANDARD\fP is set for \fI\%OBJCXX_STANDARD\fP\&.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_OBJCXX_STANDARD\fP variable if it is set when a target
|
||
is created.
|
||
.SS OBJCXX_STANDARD_REQUIRED
|
||
.sp
|
||
Boolean describing whether the value of \fBOBJCXX_STANDARD\fP is a requirement.
|
||
.sp
|
||
If this property is set to \fBON\fP, then the value of the
|
||
\fBOBJCXX_STANDARD\fP target property is treated as a requirement. If this
|
||
property is \fBOFF\fP or unset, the \fBOBJCXX_STANDARD\fP target property is
|
||
treated as optional and may “decay” to a previous standard if the requested is
|
||
not available.
|
||
.sp
|
||
If the property is not set, and the project has set the \fBCXX_STANDARD_REQUIRED\fP,
|
||
the value of \fBCXX_STANDARD_REQUIRED\fP is set for \fI\%OBJCXX_STANDARD_REQUIRED\fP\&.
|
||
.sp
|
||
See the \fBcmake\-compile\-features(7)\fP manual for information on
|
||
compile features and a list of supported compilers.
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_OBJCXX_STANDARD_REQUIRED\fP variable if it is set when a
|
||
target is created.
|
||
.SS OSX_ARCHITECTURES_<CONFIG>
|
||
.sp
|
||
Per\-configuration macOS and iOS binary architectures for a target.
|
||
.sp
|
||
This property is the configuration\-specific version of
|
||
\fBOSX_ARCHITECTURES\fP\&.
|
||
.SS OSX_ARCHITECTURES
|
||
.sp
|
||
Target specific architectures for macOS.
|
||
.sp
|
||
The \fBOSX_ARCHITECTURES\fP property sets the target binary architecture for
|
||
targets on macOS (\fB\-arch\fP). This property is initialized by the value of the
|
||
variable \fBCMAKE_OSX_ARCHITECTURES\fP if it is set when a target is
|
||
created. Use \fBOSX_ARCHITECTURES_<CONFIG>\fP to set the binary
|
||
architectures on a per\-configuration basis, where \fB<CONFIG>\fP is an
|
||
upper\-case name (e.g. \fBOSX_ARCHITECTURES_DEBUG\fP).
|
||
.SS OUTPUT_NAME_<CONFIG>
|
||
.sp
|
||
Per\-configuration target file base name.
|
||
.sp
|
||
This is the configuration\-specific version of the \fBOUTPUT_NAME\fP
|
||
target property.
|
||
.SS OUTPUT_NAME
|
||
.sp
|
||
Output name for target files.
|
||
.sp
|
||
This sets the base name for output files created for an executable or
|
||
library target. If not set, the logical target name is used by
|
||
default during generation. The value is not set by default during
|
||
configuration.
|
||
.sp
|
||
Contents of \fBOUTPUT_NAME\fP and the variants listed below may use
|
||
\fBgenerator expressions\fP\&.
|
||
.sp
|
||
See also the variants:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBOUTPUT_NAME_<CONFIG>\fP
|
||
.IP \(bu 2
|
||
\fBARCHIVE_OUTPUT_NAME_<CONFIG>\fP
|
||
.IP \(bu 2
|
||
\fBARCHIVE_OUTPUT_NAME\fP
|
||
.IP \(bu 2
|
||
\fBLIBRARY_OUTPUT_NAME_<CONFIG>\fP
|
||
.IP \(bu 2
|
||
\fBLIBRARY_OUTPUT_NAME\fP
|
||
.IP \(bu 2
|
||
\fBRUNTIME_OUTPUT_NAME_<CONFIG>\fP
|
||
.IP \(bu 2
|
||
\fBRUNTIME_OUTPUT_NAME\fP
|
||
.UNINDENT
|
||
.SS PCH_WARN_INVALID
|
||
.sp
|
||
When this property is set to true, the precompile header compiler options
|
||
will contain a compiler flag which should warn about invalid precompiled
|
||
headers e.g. \fB\-Winvalid\-pch\fP for GNU compiler.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_PCH_WARN_INVALID\fP variable if it is set when a target is
|
||
created. If that variable is not set, the property defaults to \fBON\fP\&.
|
||
.SS PDB_NAME_<CONFIG>
|
||
.sp
|
||
Per\-configuration output name for the MS debug symbol \fB\&.pdb\fP file
|
||
generated by the linker for an executable or shared library target.
|
||
.sp
|
||
This is the configuration\-specific version of \fBPDB_NAME\fP\&.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property does not apply to STATIC library targets because no linker
|
||
is invoked to produce them so they have no linker\-generated \fB\&.pdb\fP file
|
||
containing debug symbols.
|
||
.sp
|
||
The linker\-generated program database files are specified by the
|
||
\fB/pdb\fP linker flag and are not the same as compiler\-generated
|
||
program database files specified by the \fB/Fd\fP compiler flag.
|
||
Use the \fBCOMPILE_PDB_NAME_<CONFIG>\fP property to specify the latter.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS PDB_NAME
|
||
.sp
|
||
Output name for the MS debug symbol \fB\&.pdb\fP file generated by the
|
||
linker for an executable or shared library target.
|
||
.sp
|
||
This property specifies the base name for the debug symbols file.
|
||
If not set, the \fBOUTPUT_NAME\fP target property value or
|
||
logical target name is used by default.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property does not apply to STATIC library targets because no linker
|
||
is invoked to produce them so they have no linker\-generated \fB\&.pdb\fP file
|
||
containing debug symbols.
|
||
.sp
|
||
The linker\-generated program database files are specified by the
|
||
\fB/pdb\fP linker flag and are not the same as compiler\-generated
|
||
program database files specified by the \fB/Fd\fP compiler flag.
|
||
Use the \fBCOMPILE_PDB_NAME\fP property to specify the latter.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS PDB_OUTPUT_DIRECTORY_<CONFIG>
|
||
.sp
|
||
Per\-configuration output directory for the MS debug symbol \fB\&.pdb\fP file
|
||
generated by the linker for an executable or shared library target.
|
||
.sp
|
||
This is a per\-configuration version of \fBPDB_OUTPUT_DIRECTORY\fP,
|
||
but multi\-configuration generators (Visual Studio Generators,
|
||
\fBXcode\fP) do NOT append a
|
||
per\-configuration subdirectory to the specified directory. This
|
||
property is initialized by the value of the
|
||
\fBCMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG>\fP variable if it is
|
||
set when a target is created.
|
||
.sp
|
||
Contents of \fBPDB_OUTPUT_DIRECTORY_<CONFIG>\fP may use
|
||
\fBgenerator expressions\fP\&.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property does not apply to STATIC library targets because no linker
|
||
is invoked to produce them so they have no linker\-generated \fB\&.pdb\fP file
|
||
containing debug symbols.
|
||
.sp
|
||
The linker\-generated program database files are specified by the
|
||
\fB/pdb\fP linker flag and are not the same as compiler\-generated
|
||
program database files specified by the \fB/Fd\fP compiler flag.
|
||
Use the \fBCOMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>\fP property to specify the latter.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS PDB_OUTPUT_DIRECTORY
|
||
.sp
|
||
Output directory for the MS debug symbols \fB\&.pdb\fP file
|
||
generated by the linker for an executable or shared library target.
|
||
.sp
|
||
This property specifies the directory into which the MS debug symbols
|
||
will be placed by the linker. The property value may use
|
||
\fBgenerator expressions\fP\&.
|
||
Multi\-configuration generators append a per\-configuration
|
||
subdirectory to the specified directory unless a generator expression
|
||
is used.
|
||
.sp
|
||
This property is initialized by the value of the
|
||
\fBCMAKE_PDB_OUTPUT_DIRECTORY\fP variable if it is
|
||
set when a target is created.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property does not apply to STATIC library targets because no linker
|
||
is invoked to produce them so they have no linker\-generated \fB\&.pdb\fP file
|
||
containing debug symbols.
|
||
.sp
|
||
The linker\-generated program database files are specified by the
|
||
\fB/pdb\fP linker flag and are not the same as compiler\-generated
|
||
program database files specified by the \fB/Fd\fP compiler flag.
|
||
Use the \fBCOMPILE_PDB_OUTPUT_DIRECTORY\fP property to specify the latter.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS POSITION_INDEPENDENT_CODE
|
||
.sp
|
||
Whether to create a position\-independent target
|
||
.sp
|
||
The \fBPOSITION_INDEPENDENT_CODE\fP property determines whether position
|
||
independent executables or shared libraries will be created. This
|
||
property is \fBTrue\fP by default for \fBSHARED\fP and \fBMODULE\fP library
|
||
targets and \fBFalse\fP otherwise. This property is initialized by the value
|
||
of the \fBCMAKE_POSITION_INDEPENDENT_CODE\fP variable if it is set
|
||
when a target is created.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
For executable targets, the link step is controlled by the \fBCMP0083\fP
|
||
policy and the \fBCheckPIESupported\fP module.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS PRECOMPILE_HEADERS
|
||
.sp
|
||
List of header files to precompile.
|
||
.sp
|
||
This property holds a semicolon\-separated list
|
||
of header files to precompile specified so far for its target.
|
||
Use the \fBtarget_precompile_headers()\fP command to append more header
|
||
files.
|
||
.sp
|
||
This property supports
|
||
\fBgenerator expressions\fP\&.
|
||
.SS PRECOMPILE_HEADERS_REUSE_FROM
|
||
.sp
|
||
Target from which to reuse the precompiled headers build artifact.
|
||
.sp
|
||
See the second signature of \fBtarget_precompile_headers()\fP command
|
||
for more detailed information.
|
||
.SS PREFIX
|
||
.sp
|
||
What comes before the library name.
|
||
.sp
|
||
A target property that can be set to override the prefix (such as
|
||
\fBlib\fP) on a library name.
|
||
.SS PRIVATE_HEADER
|
||
.sp
|
||
Specify private header files in a \fBFRAMEWORK\fP shared library target.
|
||
.sp
|
||
Shared library targets marked with the \fBFRAMEWORK\fP property generate
|
||
frameworks on macOS, iOS and normal shared libraries on other platforms.
|
||
This property may be set to a list of header files to be placed in the
|
||
PrivateHeaders directory inside the framework folder. On non\-Apple
|
||
platforms these headers may be installed using the \fBPRIVATE_HEADER\fP
|
||
option to the \fBinstall(TARGETS)\fP command.
|
||
.SS PROJECT_LABEL
|
||
.sp
|
||
Change the name of a target in an IDE.
|
||
.sp
|
||
Can be used to change the name of the target in an IDE like Visual
|
||
Studio.
|
||
.SS PUBLIC_HEADER
|
||
.sp
|
||
Specify public header files in a \fBFRAMEWORK\fP shared library target.
|
||
.sp
|
||
Shared library targets marked with the \fBFRAMEWORK\fP property generate
|
||
frameworks on macOS, iOS and normal shared libraries on other platforms.
|
||
This property may be set to a list of header files to be placed in the
|
||
\fBHeaders\fP directory inside the framework folder. On non\-Apple platforms
|
||
these headers may be installed using the \fBPUBLIC_HEADER\fP option to the
|
||
\fBinstall(TARGETS)\fP command.
|
||
.SS RESOURCE
|
||
.sp
|
||
Specify resource files in a \fBFRAMEWORK\fP or \fBBUNDLE\fP\&.
|
||
.sp
|
||
Target marked with the \fBFRAMEWORK\fP or \fBBUNDLE\fP property
|
||
generate framework or application bundle (both macOS and iOS is supported)
|
||
or normal shared libraries on other platforms.
|
||
This property may be set to a list of files to be placed in the corresponding
|
||
directory (eg. \fBResources\fP directory for macOS) inside the bundle.
|
||
On non\-Apple platforms these files may be installed using the \fBRESOURCE\fP
|
||
option to the \fBinstall(TARGETS)\fP command.
|
||
.sp
|
||
Following example of Application Bundle:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_executable(ExecutableTarget
|
||
addDemo.c
|
||
resourcefile.txt
|
||
appresourcedir/appres.txt)
|
||
|
||
target_link_libraries(ExecutableTarget heymath mul)
|
||
|
||
set(RESOURCE_FILES
|
||
resourcefile.txt
|
||
appresourcedir/appres.txt)
|
||
|
||
set_target_properties(ExecutableTarget PROPERTIES
|
||
MACOSX_BUNDLE TRUE
|
||
MACOSX_FRAMEWORK_IDENTIFIER org.cmake.ExecutableTarget
|
||
RESOURCE "${RESOURCE_FILES}")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
will produce flat structure for iOS systems:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
ExecutableTarget.app
|
||
appres.txt
|
||
ExecutableTarget
|
||
Info.plist
|
||
resourcefile.txt
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
For macOS systems it will produce following directory structure:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
ExecutableTarget.app/
|
||
Contents
|
||
Info.plist
|
||
MacOS
|
||
ExecutableTarget
|
||
Resources
|
||
appres.txt
|
||
resourcefile.txt
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
For Linux, such CMake script produce following files:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
ExecutableTarget
|
||
Resources
|
||
appres.txt
|
||
resourcefile.txt
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS RULE_LAUNCH_COMPILE
|
||
.sp
|
||
Specify a launcher for compile rules.
|
||
.sp
|
||
See the global property of the same name for details. This overrides
|
||
the global and directory property for a target.
|
||
.SS RULE_LAUNCH_CUSTOM
|
||
.sp
|
||
Specify a launcher for custom rules.
|
||
.sp
|
||
See the global property of the same name for details. This overrides
|
||
the global and directory property for a target.
|
||
.SS RULE_LAUNCH_LINK
|
||
.sp
|
||
Specify a launcher for link rules.
|
||
.sp
|
||
See the global property of the same name for details. This overrides
|
||
the global and directory property for a target.
|
||
.SS RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
|
||
.sp
|
||
Per\-configuration output directory for
|
||
RUNTIME target files.
|
||
.sp
|
||
This is a per\-configuration version of the
|
||
\fBRUNTIME_OUTPUT_DIRECTORY\fP target property, but
|
||
multi\-configuration generators (Visual Studio Generators,
|
||
\fBXcode\fP) do NOT append a
|
||
per\-configuration subdirectory to the specified directory. This
|
||
property is initialized by the value of the
|
||
\fBCMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>\fP variable if
|
||
it is set when a target is created.
|
||
.sp
|
||
Contents of \fBRUNTIME_OUTPUT_DIRECTORY_<CONFIG>\fP may use
|
||
\fBgenerator expressions\fP\&.
|
||
.SS RUNTIME_OUTPUT_DIRECTORY
|
||
.sp
|
||
Output directory in which to build RUNTIME target files.
|
||
.sp
|
||
This property specifies the directory into which runtime target files
|
||
should be built. The property value may use
|
||
\fBgenerator expressions\fP\&.
|
||
Multi\-configuration generators (VS, Xcode) append a per\-configuration
|
||
subdirectory to the specified directory unless a generator expression
|
||
is used.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
CMAKE_RUNTIME_OUTPUT_DIRECTORY if it is set when a target is created.
|
||
.sp
|
||
See also the \fBRUNTIME_OUTPUT_DIRECTORY_<CONFIG>\fP target property.
|
||
.SS RUNTIME_OUTPUT_NAME_<CONFIG>
|
||
.sp
|
||
Per\-configuration output name for
|
||
RUNTIME target files.
|
||
.sp
|
||
This is the configuration\-specific version of the
|
||
\fBRUNTIME_OUTPUT_NAME\fP target property.
|
||
.SS RUNTIME_OUTPUT_NAME
|
||
.sp
|
||
Output name for RUNTIME target files.
|
||
.sp
|
||
This property specifies the base name for runtime target files. It
|
||
overrides \fBOUTPUT_NAME\fP and \fBOUTPUT_NAME_<CONFIG>\fP
|
||
properties.
|
||
.sp
|
||
See also the \fBRUNTIME_OUTPUT_NAME_<CONFIG>\fP target property.
|
||
.SS SKIP_BUILD_RPATH
|
||
.sp
|
||
Should rpaths be used for the build tree.
|
||
.sp
|
||
\fBSKIP_BUILD_RPATH\fP is a boolean specifying whether to skip automatic
|
||
generation of an rpath allowing the target to run from the build tree.
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_SKIP_BUILD_RPATH\fP if it is set when a target is created.
|
||
.SS SOURCE_DIR
|
||
.sp
|
||
This read\-only property reports the value of the
|
||
\fBCMAKE_CURRENT_SOURCE_DIR\fP variable in the directory in which
|
||
the target was defined.
|
||
.SS SOURCES
|
||
.sp
|
||
Source names specified for a target.
|
||
.sp
|
||
List of sources specified for a target.
|
||
.SS SOVERSION
|
||
.sp
|
||
What version number is this target.
|
||
.sp
|
||
For shared libraries \fBVERSION\fP and \fBSOVERSION\fP can be used to
|
||
specify the build version and API version respectively. When building or
|
||
installing appropriate symlinks are created if the platform supports
|
||
symlinks and the linker supports so\-names. If only one of both is
|
||
specified the missing is assumed to have the same version number.
|
||
\fBSOVERSION\fP is ignored if \fBNO_SONAME\fP property is set.
|
||
.SS Windows Versions
|
||
.sp
|
||
For shared libraries and executables on Windows the \fBVERSION\fP
|
||
attribute is parsed to extract a \fB<major>.<minor>\fP version number.
|
||
These numbers are used as the image version of the binary.
|
||
.SS Mach\-O Versions
|
||
.sp
|
||
For shared libraries and executables on Mach\-O systems (e.g. macOS, iOS),
|
||
the \fBSOVERSION\fP property corresponds to the \fIcompatibility version\fP and
|
||
\fBVERSION\fP corresponds to the \fIcurrent version\fP (unless Mach\-O
|
||
specific overrides are provided, as discussed below).
|
||
See the \fBFRAMEWORK\fP target property for an example.
|
||
.sp
|
||
For shared libraries, the \fBMACHO_COMPATIBILITY_VERSION\fP and
|
||
\fBMACHO_CURRENT_VERSION\fP properties can be used to
|
||
override the \fIcompatibility version\fP and \fIcurrent version\fP respectively.
|
||
Note that \fBSOVERSION\fP will still be used to form the \fBinstall_name\fP
|
||
and both \fBSOVERSION\fP and \fBVERSION\fP may also affect the file
|
||
and symlink names.
|
||
.sp
|
||
Versions of Mach\-O binaries may be checked with the \fBotool \-L <binary>\fP
|
||
command.
|
||
.SS STATIC_LIBRARY_FLAGS_<CONFIG>
|
||
.sp
|
||
Per\-configuration archiver (or MSVC librarian) flags for a static library
|
||
target.
|
||
.sp
|
||
This is the configuration\-specific version of \fBSTATIC_LIBRARY_FLAGS\fP\&.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property has been superseded by \fBSTATIC_LIBRARY_OPTIONS\fP
|
||
property.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS STATIC_LIBRARY_FLAGS
|
||
.sp
|
||
Archiver (or MSVC librarian) flags for a static library target.
|
||
Targets that are shared libraries, modules, or executables need to use
|
||
the \fBLINK_OPTIONS\fP or \fBLINK_FLAGS\fP target properties.
|
||
.sp
|
||
The \fBSTATIC_LIBRARY_FLAGS\fP property, managed as a string, can be used to add
|
||
extra flags to the link step of a static library target.
|
||
\fBSTATIC_LIBRARY_FLAGS_<CONFIG>\fP will add to the configuration
|
||
\fB<CONFIG>\fP, for example, \fBDEBUG\fP, \fBRELEASE\fP, \fBMINSIZEREL\fP,
|
||
\fBRELWITHDEBINFO\fP, …
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property has been superseded by \fBSTATIC_LIBRARY_OPTIONS\fP
|
||
property.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS STATIC_LIBRARY_OPTIONS
|
||
.sp
|
||
Archiver (or MSVC librarian) flags for a static library target.
|
||
Targets that are shared libraries, modules, or executables need to use
|
||
the \fBLINK_OPTIONS\fP target property.
|
||
.sp
|
||
This property holds a semicolon\-separated list of options
|
||
specified so far for its target. Use \fBset_target_properties()\fP or
|
||
\fBset_property()\fP commands to set its content.
|
||
.sp
|
||
Contents of \fBSTATIC_LIBRARY_OPTIONS\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. See the \fBcmake\-buildsystem(7)\fP manual
|
||
for more on defining buildsystem properties.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property must be used in preference to \fBSTATIC_LIBRARY_FLAGS\fP
|
||
property.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS SUFFIX
|
||
.sp
|
||
What comes after the target name.
|
||
.sp
|
||
A target property that can be set to override the suffix (such as
|
||
\fB\&.so\fP or \fB\&.exe\fP) on the name of a library, module or executable.
|
||
.SS Swift_DEPENDENCIES_FILE
|
||
.sp
|
||
This property sets the path for the Swift dependency file (swiftdep) for the
|
||
target. If one is not specified, it will default to \fB<TARGET>.swiftdeps\fP\&.
|
||
.SS Swift_LANGUAGE_VERSION
|
||
.sp
|
||
This property sets the language version for the Swift sources in the target. If
|
||
one is not specified, it will default to \fB<CMAKE_Swift_LANGUAGE_VERSION>\fP if
|
||
specified, otherwise it is the latest version supported by the compiler.
|
||
.SS Swift_MODULE_DIRECTORY
|
||
.sp
|
||
Specify output directory for Swift modules provided by the target.
|
||
.sp
|
||
If the target contains Swift source files, this specifies the directory in which
|
||
the modules will be placed. When this property is not set, the modules will be
|
||
placed in the build directory corresponding to the target’s source directory.
|
||
If the variable \fBCMAKE_Swift_MODULE_DIRECTORY\fP is set when a target is
|
||
created its value is used to initialise this property.
|
||
.SS Swift_MODULE_NAME
|
||
.sp
|
||
This property specifies the name of the Swift module. It is defaulted to the
|
||
name of the target.
|
||
.SS TYPE
|
||
.sp
|
||
The type of the target.
|
||
.sp
|
||
This read\-only property can be used to test the type of the given
|
||
target. It will be one of \fBSTATIC_LIBRARY\fP, \fBMODULE_LIBRARY\fP,
|
||
\fBSHARED_LIBRARY\fP, \fBOBJECT_LIBRARY\fP, \fBINTERFACE_LIBRARY\fP, \fBEXECUTABLE\fP
|
||
or one of the internal target types.
|
||
.SS UNITY_BUILD
|
||
.sp
|
||
When this property is set to true, the target source files will be combined
|
||
into batches for faster compilation. This is done by creating a (set of)
|
||
unity sources which \fB#include\fP the original sources, then compiling these
|
||
unity sources instead of the originals. This is known as a \fIUnity\fP or \fIJumbo\fP
|
||
build.
|
||
.sp
|
||
CMake provides different algorithms for selecting which sources are grouped
|
||
together into a \fIbucket\fP\&. Algorithm selection is decided by the
|
||
\fBUNITY_BUILD_MODE\fP target property, which has the following acceptable
|
||
values:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBBATCH\fP
|
||
When in this mode CMake determines which files are grouped together.
|
||
The \fBUNITY_BUILD_BATCH_SIZE\fP property controls the upper limit on
|
||
how many sources can be combined per unity source file.
|
||
.IP \(bu 2
|
||
\fBGROUP\fP
|
||
When in this mode each target explicitly specifies how to group
|
||
source files. Each source file that has the same
|
||
\fBUNITY_GROUP\fP value will be grouped together. Any sources
|
||
that don’t have this property will be compiled individually. The
|
||
\fBUNITY_BUILD_BATCH_SIZE\fP property is ignored when using
|
||
this mode.
|
||
.UNINDENT
|
||
.sp
|
||
If no explicit \fBUNITY_BUILD_MODE\fP has been specified, CMake will
|
||
default to \fBBATCH\fP\&.
|
||
.sp
|
||
Unity builds are not currently supported for all languages. CMake version
|
||
3.18.2 supports combining \fBC\fP and \fBCXX\fP source files. For targets that
|
||
mix source files from more than one language, CMake will separate the languages
|
||
such that each generated unity source file only contains sources for a single
|
||
language.
|
||
.sp
|
||
This property is initialized by the value of the \fBCMAKE_UNITY_BUILD\fP
|
||
variable when a target is created.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
Projects should not directly set the \fBUNITY_BUILD\fP property or its
|
||
associated \fBCMAKE_UNITY_BUILD\fP variable to true. Depending
|
||
on the capabilities of the build machine and compiler used, it might or
|
||
might not be appropriate to enable unity builds. Therefore, this feature
|
||
should be under developer control, which would normally be through the
|
||
developer choosing whether or not to set the \fBCMAKE_UNITY_BUILD\fP
|
||
variable on the \fBcmake(1)\fP command line or some other equivalent
|
||
method. However, it IS recommended to set the \fBUNITY_BUILD\fP target
|
||
property to false if it is known that enabling unity builds for the
|
||
target can lead to problems.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS ODR (One definition rule) errors
|
||
.sp
|
||
When multiple source files are included into one source file, as is done
|
||
for unity builds, it can potentially lead to ODR errors. CMake provides
|
||
a number of measures to help address such problems:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
Any source file that has a non\-empty \fBCOMPILE_OPTIONS\fP,
|
||
\fBCOMPILE_DEFINITIONS\fP, \fBCOMPILE_FLAGS\fP, or
|
||
\fBINCLUDE_DIRECTORIES\fP source property will not be combined
|
||
into a unity source.
|
||
.IP \(bu 2
|
||
Projects can prevent an individual source file from being combined into
|
||
a unity source by setting its \fBSKIP_UNITY_BUILD_INCLUSION\fP
|
||
source property to true. This can be a more effective way to prevent
|
||
problems with specific files than disabling unity builds for an entire
|
||
target.
|
||
.IP \(bu 2
|
||
The \fBUNITY_BUILD_CODE_BEFORE_INCLUDE\fP and
|
||
\fBUNITY_BUILD_CODE_AFTER_INCLUDE\fP target properties can be used
|
||
to inject code into the unity source files before and after every
|
||
\fB#include\fP statement.
|
||
.IP \(bu 2
|
||
The order of source files added to the target via commands like
|
||
\fBadd_library()\fP, \fBadd_executable()\fP or
|
||
\fBtarget_sources()\fP will be preserved in the generated unity source
|
||
files. This can be used to manually enforce a specific grouping based on
|
||
the \fBUNITY_BUILD_BATCH_SIZE\fP target property.
|
||
.UNINDENT
|
||
.SS UNITY_BUILD_BATCH_SIZE
|
||
.sp
|
||
Specifies the maximum number of source files that can be combined into any one
|
||
unity source file when unity builds are enabled by the \fBUNITY_BUILD\fP
|
||
target property. The original source files will be distributed across as many
|
||
unity source files as necessary to honor this limit.
|
||
.sp
|
||
The initial value for this property is taken from the
|
||
\fBCMAKE_UNITY_BUILD_BATCH_SIZE\fP variable when the target is created.
|
||
If that variable has not been set, the initial value will be 8.
|
||
.sp
|
||
The batch size needs to be selected carefully. If set too high, the size of
|
||
the combined source files could result in the compiler using excessive memory
|
||
or hitting other similar limits. In extreme cases, this can even result in
|
||
build failure. On the other hand, if the batch size is too low, there will be
|
||
little gain in build performance.
|
||
.sp
|
||
Although strongly discouraged, the batch size may be set to a value of 0 to
|
||
combine all the sources for the target into a single unity file, regardless of
|
||
how many sources are involved. This runs the risk of creating an excessively
|
||
large unity source file and negatively impacting the build performance, so
|
||
a value of 0 is not generally recommended.
|
||
.SS UNITY_BUILD_CODE_AFTER_INCLUDE
|
||
.sp
|
||
Code snippet which is included verbatim by the \fBUNITY_BUILD\fP
|
||
feature just after every \fB#include\fP statement in the generated unity
|
||
source files. For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set(after [[
|
||
#if defined(NOMINMAX)
|
||
#undef NOMINMAX
|
||
#endif
|
||
]])
|
||
set_target_properties(myTarget PROPERTIES
|
||
UNITY_BUILD_CODE_AFTER_INCLUDE "${after}"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
See also \fBUNITY_BUILD_CODE_BEFORE_INCLUDE\fP\&.
|
||
.SS UNITY_BUILD_CODE_BEFORE_INCLUDE
|
||
.sp
|
||
Code snippet which is included verbatim by the \fBUNITY_BUILD\fP
|
||
feature just before every \fB#include\fP statement in the generated unity
|
||
source files. For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set(before [[
|
||
#if !defined(NOMINMAX)
|
||
#define NOMINMAX
|
||
#endif
|
||
]])
|
||
set_target_properties(myTarget PROPERTIES
|
||
UNITY_BUILD_CODE_BEFORE_INCLUDE "${before}"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
See also \fBUNITY_BUILD_CODE_AFTER_INCLUDE\fP\&.
|
||
.SS UNITY_BUILD_MODE
|
||
.sp
|
||
CMake provides different algorithms for selecting which sources are grouped
|
||
together into a \fIbucket\fP\&. Selection is decided by this property,
|
||
which has the following acceptable values:
|
||
.INDENT 0.0
|
||
.TP
|
||
.B \fBBATCH\fP
|
||
When in this mode CMake determines which files are grouped together.
|
||
The \fBUNITY_BUILD_BATCH_SIZE\fP property controls the upper limit on
|
||
how many sources can be combined per unity source file.
|
||
.sp
|
||
Example usage:
|
||
.INDENT 7.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_library(example_library
|
||
source1.cxx
|
||
source2.cxx
|
||
source3.cxx
|
||
source4.cxx)
|
||
|
||
set_target_properties(example_library PROPERTIES
|
||
UNITY_BUILD_MODE BATCH
|
||
UNITY_BUILD_BATCH_SIZE 2
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.TP
|
||
.B \fBGROUP\fP
|
||
When in this mode each target explicitly specifies how to group
|
||
source files. Each source file that has the same
|
||
\fBUNITY_GROUP\fP value will be grouped together. Any sources
|
||
that don’t have this property will be compiled individually. The
|
||
\fBUNITY_BUILD_BATCH_SIZE\fP property is ignored when using
|
||
this mode.
|
||
.sp
|
||
Example usage:
|
||
.INDENT 7.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_library(example_library
|
||
source1.cxx
|
||
source2.cxx
|
||
source3.cxx
|
||
source4.cxx)
|
||
|
||
set_target_properties(example_library PROPERTIES
|
||
UNITY_BUILD_MODE GROUP
|
||
)
|
||
|
||
set_source_files_properties(source1.cxx source2.cxx source3.cxx
|
||
PROPERTIES UNITY_GROUP "bucket1"
|
||
)
|
||
set_source_files_properties(source4.cxx
|
||
PROPERTIES UNITY_GROUP "bucket2"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
If no explicit \fI\%UNITY_BUILD_MODE\fP has been specified, CMake will
|
||
default to \fBBATCH\fP\&.
|
||
.SS VERSION
|
||
.sp
|
||
What version number is this target.
|
||
.sp
|
||
For shared libraries \fBVERSION\fP and \fBSOVERSION\fP can be used
|
||
to specify the build version and API version respectively. When building or
|
||
installing appropriate symlinks are created if the platform supports
|
||
symlinks and the linker supports so\-names. If only one of both is
|
||
specified the missing is assumed to have the same version number. For
|
||
executables \fBVERSION\fP can be used to specify the build version. When
|
||
building or installing appropriate symlinks are created if the
|
||
platform supports symlinks.
|
||
.SS Windows Versions
|
||
.sp
|
||
For shared libraries and executables on Windows the \fBVERSION\fP
|
||
attribute is parsed to extract a \fB<major>.<minor>\fP version number.
|
||
These numbers are used as the image version of the binary.
|
||
.SS Mach\-O Versions
|
||
.sp
|
||
For shared libraries and executables on Mach\-O systems (e.g. macOS, iOS),
|
||
the \fBSOVERSION\fP property corresponds to the \fIcompatibility version\fP
|
||
and \fBVERSION\fP corresponds to the \fIcurrent version\fP (unless Mach\-O specific
|
||
overrides are provided, as discussed below).
|
||
See the \fBFRAMEWORK\fP target property for an example.
|
||
.sp
|
||
For shared libraries, the \fBMACHO_COMPATIBILITY_VERSION\fP and
|
||
\fBMACHO_CURRENT_VERSION\fP properties can be used to
|
||
override the \fIcompatibility version\fP and \fIcurrent version\fP respectively.
|
||
Note that \fBSOVERSION\fP will still be used to form the
|
||
\fBinstall_name\fP and both \fBSOVERSION\fP and \fBVERSION\fP may also
|
||
affect the file and symlink names.
|
||
.sp
|
||
Versions of Mach\-O binaries may be checked with the \fBotool \-L <binary>\fP
|
||
command.
|
||
.SS VISIBILITY_INLINES_HIDDEN
|
||
.sp
|
||
Whether to add a compile flag to hide symbols of inline functions
|
||
.sp
|
||
The \fBVISIBILITY_INLINES_HIDDEN\fP property determines whether a flag for
|
||
hiding symbols for inline functions, such as \fB\-fvisibility\-inlines\-hidden\fP,
|
||
should be used when invoking the compiler. This property affects compilation
|
||
in sources of all types of targets (subject to policy \fBCMP0063\fP).
|
||
.sp
|
||
This property is initialized by
|
||
the value of the \fBCMAKE_VISIBILITY_INLINES_HIDDEN\fP variable if it
|
||
is set when a target is created.
|
||
.SS VS_CONFIGURATION_TYPE
|
||
.sp
|
||
Visual Studio project configuration type.
|
||
.sp
|
||
Sets the \fBConfigurationType\fP attribute for a generated Visual Studio project.
|
||
The property value may use
|
||
\fBgenerator expressions\fP\&.
|
||
If this property is set, it overrides the default setting that is based on the
|
||
target type (e.g. \fBStaticLibrary\fP, \fBApplication\fP, …).
|
||
.sp
|
||
Supported on Visual Studio Generators for VS 2010 and higher.
|
||
.SS VS_DEBUGGER_COMMAND
|
||
.sp
|
||
Sets the local debugger command for Visual Studio C++ targets.
|
||
The property value may use
|
||
\fBgenerator expressions\fP\&.
|
||
This is defined in \fB<LocalDebuggerCommand>\fP in the Visual Studio
|
||
project file.
|
||
.sp
|
||
This property only works for Visual Studio 2010 and above;
|
||
it is ignored on other generators.
|
||
.SS VS_DEBUGGER_COMMAND_ARGUMENTS
|
||
.sp
|
||
Sets the local debugger command line arguments for Visual Studio C++ targets.
|
||
The property value may use
|
||
\fBgenerator expressions\fP\&.
|
||
This is defined in \fB<LocalDebuggerCommandArguments>\fP in the Visual Studio
|
||
project file.
|
||
.sp
|
||
This property only works for Visual Studio 2010 and above;
|
||
it is ignored on other generators.
|
||
.SS VS_DEBUGGER_ENVIRONMENT
|
||
.sp
|
||
Sets the local debugger environment for Visual Studio C++ targets.
|
||
The property value may use
|
||
\fBgenerator expressions\fP\&.
|
||
This is defined in \fB<LocalDebuggerEnvironment>\fP in the Visual Studio
|
||
project file.
|
||
.sp
|
||
This property only works for Visual Studio 2010 and above;
|
||
it is ignored on other generators.
|
||
.SS VS_DEBUGGER_WORKING_DIRECTORY
|
||
.sp
|
||
Sets the local debugger working directory for Visual Studio C++ targets.
|
||
The property value may use
|
||
\fBgenerator expressions\fP\&.
|
||
This is defined in \fB<LocalDebuggerWorkingDirectory>\fP in the Visual Studio
|
||
project file.
|
||
.sp
|
||
This property only works for Visual Studio 2010 and above;
|
||
it is ignored on other generators.
|
||
.SS VS_DESKTOP_EXTENSIONS_VERSION
|
||
.sp
|
||
Visual Studio Windows 10 Desktop Extensions Version
|
||
.sp
|
||
Specifies the version of the Desktop Extensions that should be included in the
|
||
target. For example \fB10.0.10240.0\fP\&. If the value is not specified, the Desktop
|
||
Extensions will not be included. To use the same version of the extensions as
|
||
the Windows 10 SDK that is being used, you can use the
|
||
\fBCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION\fP variable.
|
||
.SS VS_DOTNET_REFERENCE_<refname>
|
||
.sp
|
||
Visual Studio managed project .NET reference with name \fB<refname>\fP
|
||
and hint path.
|
||
.sp
|
||
Adds one .NET reference to generated Visual Studio project. The
|
||
reference will have the name \fB<refname>\fP and will point to the
|
||
assembly given as value of the property.
|
||
.sp
|
||
See also \fBVS_DOTNET_REFERENCES\fP and
|
||
\fBVS_DOTNET_REFERENCES_COPY_LOCAL\fP
|
||
.SS VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname>
|
||
.sp
|
||
Defines an XML property \fB<tagname>\fP for a .NET reference
|
||
\fB<refname>\fP\&.
|
||
.sp
|
||
Reference properties can be set for .NET references which are
|
||
defined by the target properties \fBVS_DOTNET_REFERENCES\fP,
|
||
\fBVS_DOTNET_REFERENCE_<refname>\fP
|
||
and also for project references to other C# targets which are
|
||
established by \fBtarget_link_libraries()\fP\&.
|
||
.sp
|
||
This property is only applicable to C# targets and Visual Studio
|
||
generators 2010 and later.
|
||
.SS VS_DOTNET_REFERENCES
|
||
.sp
|
||
Visual Studio managed project .NET references
|
||
.sp
|
||
Adds one or more semicolon\-delimited .NET references to a generated
|
||
Visual Studio project. For example, “System;System.Windows.Forms”.
|
||
.SS VS_DOTNET_REFERENCES_COPY_LOCAL
|
||
.sp
|
||
Sets the \fBCopy Local\fP property for all .NET hint references in the target
|
||
.sp
|
||
Boolean property to enable/disable copying of .NET hint references to
|
||
output directory. The default is \fBON\fP\&.
|
||
.SS VS_DOTNET_TARGET_FRAMEWORK_VERSION
|
||
.sp
|
||
Specify the .NET target framework version.
|
||
.sp
|
||
Used to specify the .NET target framework version for C++/CLI. For
|
||
example, “v4.5”.
|
||
.sp
|
||
This property is deprecated and should not be used anymore. Use
|
||
\fBDOTNET_TARGET_FRAMEWORK\fP or
|
||
\fBDOTNET_TARGET_FRAMEWORK_VERSION\fP instead.
|
||
.SS VS_DOTNET_DOCUMENTATION_FILE
|
||
.sp
|
||
Visual Studio managed project .NET documentation output
|
||
.sp
|
||
Sets the target XML documentation file output.
|
||
.SS VS_DPI_AWARE
|
||
.sp
|
||
Set the Manifest Tool \-> Input and Output \-> DPI Awareness in the Visual Studio
|
||
target project properties.
|
||
.sp
|
||
Valid values are \fBPerMonitor\fP, \fBON\fP, or \fBOFF\fP\&.
|
||
.sp
|
||
For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_executable(myproject myproject.cpp)
|
||
set_property(TARGET myproject PROPERTY VS_DPI_AWARE "PerMonitor")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS VS_GLOBAL_KEYWORD
|
||
.sp
|
||
Visual Studio project keyword for VS 10 (2010) and newer.
|
||
.sp
|
||
Sets the “keyword” attribute for a generated Visual Studio project.
|
||
Defaults to “Win32Proj”. You may wish to override this value with
|
||
“ManagedCProj”, for example, in a Visual Studio managed C++ unit test
|
||
project.
|
||
.sp
|
||
Use the \fBVS_KEYWORD\fP target property to set the
|
||
keyword for Visual Studio 9 (2008) and older.
|
||
.SS VS_GLOBAL_PROJECT_TYPES
|
||
.sp
|
||
Visual Studio project type(s).
|
||
.sp
|
||
Can be set to one or more UUIDs recognized by Visual Studio to
|
||
indicate the type of project. This value is copied verbatim into the
|
||
generated project file. Example for a managed C++ unit testing
|
||
project:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
{3AC096D0\-A1C2\-E12C\-1390\-A8335801FDAB};{8BC9CEB8\-8B4A\-11D0\-8D11\-00A0C91BC942}
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
UUIDs are semicolon\-delimited.
|
||
.SS VS_GLOBAL_ROOTNAMESPACE
|
||
.sp
|
||
Visual Studio project root namespace.
|
||
.sp
|
||
Sets the “RootNamespace” attribute for a generated Visual Studio
|
||
project. The attribute will be generated only if this is set.
|
||
.SS VS_GLOBAL_<variable>
|
||
.sp
|
||
Visual Studio project\-specific global variable.
|
||
.sp
|
||
Tell the Visual Studio generator to set the global variable
|
||
‘<variable>’ to a given value in the generated Visual Studio project.
|
||
Ignored on other generators. Qt integration works better if
|
||
VS_GLOBAL_QtVersion is set to the version FindQt4.cmake found. For
|
||
example, “4.7.3”
|
||
.SS VS_IOT_EXTENSIONS_VERSION
|
||
.sp
|
||
Visual Studio Windows 10 IoT Extensions Version
|
||
.sp
|
||
Specifies the version of the IoT Extensions that should be included in the
|
||
target. For example \fB10.0.10240.0\fP\&. If the value is not specified, the IoT
|
||
Extensions will not be included. To use the same version of the extensions as
|
||
the Windows 10 SDK that is being used, you can use the
|
||
\fBCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION\fP variable.
|
||
.SS VS_IOT_STARTUP_TASK
|
||
.sp
|
||
Visual Studio Windows 10 IoT Continuous Background Task
|
||
.sp
|
||
Specifies that the target should be compiled as a Continuous Background Task library.
|
||
.SS VS_JUST_MY_CODE_DEBUGGING
|
||
.sp
|
||
Enable Just My Code with Visual Studio debugger.
|
||
.sp
|
||
Supported on Visual Studio Generators for VS 2010 and higher,
|
||
Makefile Generators and the \fBNinja\fP generators.
|
||
.sp
|
||
This property is initialized by the \fBCMAKE_VS_JUST_MY_CODE_DEBUGGING\fP
|
||
variable if it is set when a target is created.
|
||
.SS VS_KEYWORD
|
||
.sp
|
||
Visual Studio project keyword for VS 9 (2008) and older.
|
||
.sp
|
||
Can be set to change the visual studio keyword, for example Qt
|
||
integration works better if this is set to Qt4VSv1.0.
|
||
.sp
|
||
Use the \fBVS_GLOBAL_KEYWORD\fP target property to set the
|
||
keyword for Visual Studio 10 (2010) and newer.
|
||
.SS VS_MOBILE_EXTENSIONS_VERSION
|
||
.sp
|
||
Visual Studio Windows 10 Mobile Extensions Version
|
||
.sp
|
||
Specifies the version of the Mobile Extensions that should be included in the
|
||
target. For example \fB10.0.10240.0\fP\&. If the value is not specified, the Mobile
|
||
Extensions will not be included. To use the same version of the extensions as
|
||
the Windows 10 SDK that is being used, you can use the
|
||
\fBCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION\fP variable.
|
||
.SS VS_NO_SOLUTION_DEPLOY
|
||
.sp
|
||
Specify that the target should not be marked for deployment to a Windows CE
|
||
or Windows Phone device in the generated Visual Studio solution.
|
||
.sp
|
||
Be default, all EXE and shared library (DLL) targets are marked to deploy to
|
||
the target device in the generated Visual Studio solution.
|
||
.sp
|
||
Generator expressions are supported.
|
||
.sp
|
||
There are reasons one might want to exclude a target / generated project from
|
||
deployment:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
The library or executable may not be necessary in the primary deploy/debug
|
||
scenario, and excluding from deployment saves time in the
|
||
develop/download/debug cycle.
|
||
.IP \(bu 2
|
||
There may be insufficient space on the target device to accommodate all of
|
||
the build products.
|
||
.IP \(bu 2
|
||
Visual Studio 2013 requires a target device IP address be entered for each
|
||
target marked for deployment. For large numbers of targets, this can be
|
||
tedious.
|
||
NOTE: Visual Studio \fIwill\fP deploy all project dependencies of a project
|
||
tagged for deployment to the IP address configured for that project even
|
||
if those dependencies are not tagged for deployment.
|
||
.UNINDENT
|
||
.SS Example 1
|
||
.sp
|
||
This shows setting the variable for the target foo.
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_library(foo SHARED foo.cpp)
|
||
set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY ON)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS Example 2
|
||
.sp
|
||
This shows setting the variable for the Release configuration only.
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_library(foo SHARED foo.cpp)
|
||
set_property(TARGET foo PROPERTY VS_NO_SOLUTION_DEPLOY "$<CONFIG:Release>")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS VS_PACKAGE_REFERENCES
|
||
.sp
|
||
Visual Studio package references for nuget.
|
||
.sp
|
||
Adds one or more semicolon\-delimited package references to a generated
|
||
Visual Studio project. The version of the package will be
|
||
underscore delimited. For example, \fBboost_1.7.0;nunit_3.12.*\fP\&.
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET ${TARGET_NAME} PROPERTY
|
||
VS_PACKAGE_REFERENCES "boost_1.7.0")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS VS_PLATFORM_TOOLSET
|
||
.sp
|
||
Overrides the platform toolset used to build a target.
|
||
.sp
|
||
Only supported when the compiler used by the given toolset is the
|
||
same as the compiler used to build the whole source tree.
|
||
.sp
|
||
This is especially useful to create driver projects with the toolsets
|
||
“WindowsUserModeDriver10.0” or “WindowsKernelModeDriver10.0”.
|
||
.SS VS_PROJECT_IMPORT
|
||
.sp
|
||
Visual Studio managed project imports
|
||
.sp
|
||
Adds to a generated Visual Studio project one or more semicolon\-delimited paths
|
||
to .props files needed when building projects from some NuGet packages.
|
||
For example, \fBmy_packages_path/MyPackage.1.0.0/build/MyPackage.props\fP\&.
|
||
.SS VS_SCC_AUXPATH
|
||
.sp
|
||
Visual Studio Source Code Control Aux Path.
|
||
.sp
|
||
Can be set to change the visual studio source code control auxpath
|
||
property.
|
||
.SS VS_SCC_LOCALPATH
|
||
.sp
|
||
Visual Studio Source Code Control Local Path.
|
||
.sp
|
||
Can be set to change the visual studio source code control local path
|
||
property.
|
||
.SS VS_SCC_PROJECTNAME
|
||
.sp
|
||
Visual Studio Source Code Control Project.
|
||
.sp
|
||
Can be set to change the visual studio source code control project
|
||
name property.
|
||
.SS VS_SCC_PROVIDER
|
||
.sp
|
||
Visual Studio Source Code Control Provider.
|
||
.sp
|
||
Can be set to change the visual studio source code control provider
|
||
property.
|
||
.SS VS_SDK_REFERENCES
|
||
.sp
|
||
Visual Studio project SDK references.
|
||
Specify a semicolon\-separated list of SDK references
|
||
to be added to a generated Visual Studio project, e.g.
|
||
\fBMicrosoft.AdMediatorWindows81, Version=1.0\fP\&.
|
||
.SS VS_SOLUTION_DEPLOY
|
||
.sp
|
||
Specify that the target should be marked for deployment when not targeting
|
||
Windows CE, Windows Phone or a Windows Store application.
|
||
.sp
|
||
If the target platform doesn’t support deployment, this property won’t have
|
||
any effect.
|
||
.sp
|
||
\fBGenerator expressions\fP are supported.
|
||
.SS Examples
|
||
.sp
|
||
Always deploy target \fBfoo\fP:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_executable(foo SHARED foo.cpp)
|
||
set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY ON)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Deploy target \fBfoo\fP for all configurations except \fBRelease\fP:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_executable(foo SHARED foo.cpp)
|
||
set_property(TARGET foo PROPERTY VS_SOLUTION_DEPLOY "$<NOT:$<CONFIG:Release>>")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS VS_SOURCE_SETTINGS_<tool>
|
||
.sp
|
||
Set any item metadata on all non\-built files that use <tool>.
|
||
.sp
|
||
Takes a list of \fBKey=Value\fP pairs. Tells the Visual Studio generator
|
||
to set \fBKey\fP to \fBValue\fP as item metadata on all non\-built files
|
||
that use \fB<tool>\fP\&.
|
||
.sp
|
||
For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TARGET main PROPERTY VS_SOURCE_SETTINGS_FXCompile "Key=Value" "Key2=Value2")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
will set \fBKey\fP to \fBValue\fP and \fBKey2\fP to \fBValue2\fP for all
|
||
non\-built files that use \fBFXCompile\fP\&.
|
||
.sp
|
||
\fBGenerator expressions\fP are supported.
|
||
.SS VS_USER_PROPS
|
||
.sp
|
||
Sets the user props file to be included in the visual studio
|
||
C++ project file. The standard path is
|
||
\fB$(UserRootDir)\e\eMicrosoft.Cpp.$(Platform).user.props\fP, which is
|
||
in most cases the same as
|
||
\fB%LOCALAPPDATA%\e\eMicrosoft\e\eMSBuild\e\ev4.0\e\eMicrosoft.Cpp.Win32.user.props\fP
|
||
or \fB%LOCALAPPDATA%\e\eMicrosoft\e\eMSBuild\e\ev4.0\e\eMicrosoft.Cpp.x64.user.props\fP\&.
|
||
.sp
|
||
The \fB*.user.props\fP files can be used for Visual Studio wide
|
||
configuration which is independent from cmake.
|
||
.SS VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION
|
||
.sp
|
||
Visual Studio Windows Target Platform Minimum Version
|
||
.sp
|
||
For Windows 10. Specifies the minimum version of the OS that is being
|
||
targeted. For example \fB10.0.10240.0\fP\&. If the value is not specified, the
|
||
value of \fBCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION\fP will be used on
|
||
WindowsStore projects otherwise the target platform minimum version will not
|
||
be specified for the project.
|
||
.SS VS_WINRT_COMPONENT
|
||
.sp
|
||
Mark a target as a Windows Runtime component for the Visual Studio generator.
|
||
Compile the target with \fBC++/CX\fP language extensions for Windows Runtime.
|
||
For \fBSHARED\fP and \fBMODULE\fP libraries, this also defines the
|
||
\fB_WINRT_DLL\fP preprocessor macro.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
Currently this is implemented only by Visual Studio generators.
|
||
Support may be added to other generators in the future.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS VS_WINRT_EXTENSIONS
|
||
.sp
|
||
Deprecated. Use \fBVS_WINRT_COMPONENT\fP instead.
|
||
This property was an experimental partial implementation of that one.
|
||
.SS VS_WINRT_REFERENCES
|
||
.sp
|
||
Visual Studio project Windows Runtime Metadata references
|
||
.sp
|
||
Adds one or more semicolon\-delimited WinRT references to a generated
|
||
Visual Studio project. For example, “Windows;Windows.UI.Core”.
|
||
.SS WIN32_EXECUTABLE
|
||
.sp
|
||
Build an executable with a WinMain entry point on windows.
|
||
.sp
|
||
When this property is set to true the executable when linked on
|
||
Windows will be created with a WinMain() entry point instead of just
|
||
main(). This makes it a GUI executable instead of a console application.
|
||
See the \fBCMAKE_MFC_FLAG\fP variable documentation to
|
||
configure use of the Microsoft Foundation Classes (MFC) for WinMain
|
||
executables. This property is initialized by the value of the
|
||
\fBCMAKE_WIN32_EXECUTABLE\fP variable if it is set when
|
||
a target is created.
|
||
.SS WINDOWS_EXPORT_ALL_SYMBOLS
|
||
.sp
|
||
This property is implemented only for MS\-compatible tools on Windows.
|
||
.sp
|
||
Enable this boolean property to automatically create a module definition
|
||
(\fB\&.def\fP) file with all global symbols found in the input \fB\&.obj\fP files
|
||
for a \fBSHARED\fP library (or executable with \fBENABLE_EXPORTS\fP)
|
||
on Windows. The module definition file will be passed to the linker
|
||
causing all symbols to be exported from the \fB\&.dll\fP\&.
|
||
For global \fIdata\fP symbols, \fB__declspec(dllimport)\fP must still be used when
|
||
compiling against the code in the \fB\&.dll\fP\&. All other function symbols will
|
||
be automatically exported and imported by callers. This simplifies porting
|
||
projects to Windows by reducing the need for explicit \fBdllexport\fP markup,
|
||
even in \fBC++\fP classes.
|
||
.sp
|
||
When this property is enabled, zero or more \fB\&.def\fP files may also be
|
||
specified as source files of the target. The exports named by these files
|
||
will be merged with those detected from the object files to generate a
|
||
single module definition file to be passed to the linker. This can be
|
||
used to export symbols from a \fB\&.dll\fP that are not in any of its object
|
||
files but are added by the linker from dependencies (e.g. \fBmsvcrt.lib\fP).
|
||
.sp
|
||
This property is initialized by the value of
|
||
the \fBCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS\fP variable if it is set
|
||
when a target is created.
|
||
.SS XCODE_ATTRIBUTE_<an\-attribute>
|
||
.sp
|
||
Set Xcode target attributes directly.
|
||
.sp
|
||
Tell the \fBXcode\fP generator to set ‘<an\-attribute>’ to a given
|
||
value in the generated Xcode project. Ignored on other generators.
|
||
.sp
|
||
See the \fBCMAKE_XCODE_ATTRIBUTE_<an\-attribute>\fP variable
|
||
to set attributes on all targets in a directory tree.
|
||
.sp
|
||
Contents of \fBXCODE_ATTRIBUTE_<an\-attribute>\fP may use
|
||
“generator expressions” with the syntax \fB$<...>\fP\&. See the
|
||
\fBcmake\-generator\-expressions(7)\fP manual for available
|
||
expressions. See the \fBcmake\-buildsystem(7)\fP manual
|
||
for more on defining buildsystem properties.
|
||
.SS XCODE_EXPLICIT_FILE_TYPE
|
||
.sp
|
||
Set the Xcode \fBexplicitFileType\fP attribute on its reference to a
|
||
target. CMake computes a default based on target type but
|
||
can be told explicitly with this property.
|
||
.sp
|
||
See also \fBXCODE_PRODUCT_TYPE\fP\&.
|
||
.SS XCODE_GENERATE_SCHEME
|
||
.sp
|
||
If enabled, the \fBXcode\fP generator will generate schema files. These
|
||
are useful to invoke analyze, archive, build\-for\-testing and test
|
||
actions from the command line.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_GENERATE_SCHEME\fP if it is set when a target
|
||
is created.
|
||
.sp
|
||
The following target properties overwrite the default of the
|
||
corresponding settings on the “Diagnostic” tab for each schema file.
|
||
Each of those is initialized by the respective \fBCMAKE_\fP variable
|
||
at target creation time.
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_ADDRESS_SANITIZER\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_DYNAMIC_LIBRARY_LOADS\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_DYNAMIC_LINKER_API_USAGE\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_GUARD_MALLOC\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_MAIN_THREAD_CHECKER_STOP\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_MALLOC_GUARD_EDGES\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_MALLOC_SCRIBBLE\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_MALLOC_STACK\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_THREAD_SANITIZER\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_THREAD_SANITIZER_STOP\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_ZOMBIE_OBJECTS\fP
|
||
.UNINDENT
|
||
.sp
|
||
The following target properties will be applied on the
|
||
“Info”, “Arguments”, and “Options” tab:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_ARGUMENTS\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_DEBUG_AS_ROOT\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_ENVIRONMENT\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_EXECUTABLE\fP
|
||
.IP \(bu 2
|
||
\fBXCODE_SCHEME_WORKING_DIRECTORY\fP
|
||
.UNINDENT
|
||
.SS XCODE_PRODUCT_TYPE
|
||
.sp
|
||
Set the Xcode \fBproductType\fP attribute on its reference to a
|
||
target. CMake computes a default based on target type but
|
||
can be told explicitly with this property.
|
||
.sp
|
||
See also \fBXCODE_EXPLICIT_FILE_TYPE\fP\&.
|
||
.SS XCODE_SCHEME_ADDRESS_SANITIZER
|
||
.sp
|
||
Whether to enable \fBAddress Sanitizer\fP in the Diagnostics
|
||
section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_ADDRESS_SANITIZER\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN
|
||
.sp
|
||
Whether to enable \fBDetect use of stack after return\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN\fP
|
||
if it is set when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_ARGUMENTS
|
||
.sp
|
||
Specify command line arguments that should be added to the Arguments
|
||
section of the generated Xcode scheme.
|
||
.sp
|
||
If set to a list of arguments those will be added to the scheme.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_DEBUG_AS_ROOT
|
||
.sp
|
||
Whether to debug the target as ‘root’.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING
|
||
.sp
|
||
Whether to enable
|
||
\fBAllow debugging when using document Versions Browser\fP
|
||
in the Options section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING\fP
|
||
if it is set when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER
|
||
.sp
|
||
Whether to disable the \fBMain Thread Checker\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER\fP
|
||
if it is set when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS
|
||
.sp
|
||
Whether to enable \fBDynamic Library Loads\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE
|
||
.sp
|
||
Whether to enable \fBDynamic Linker API usage\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_ENVIRONMENT
|
||
.sp
|
||
Specify environment variables that should be added to the Arguments
|
||
section of the generated Xcode scheme.
|
||
.sp
|
||
If set to a list of environment variables and values of the form
|
||
\fBMYVAR=value\fP those environment variables will be added to the
|
||
scheme.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_EXECUTABLE
|
||
.sp
|
||
Specify path to executable in the Info section of the generated
|
||
Xcode scheme. If not set the schema generator will select the
|
||
current target if it is actually executable.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_GUARD_MALLOC
|
||
.sp
|
||
Whether to enable \fBGuard Malloc\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_GUARD_MALLOC\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP
|
||
.sp
|
||
Whether to enable the \fBMain Thread Checker\fP option
|
||
\fBPause on issues\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_MALLOC_GUARD_EDGES
|
||
.sp
|
||
Whether to enable \fBMalloc Guard Edges\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_MALLOC_SCRIBBLE
|
||
.sp
|
||
Whether to enable \fBMalloc Scribble\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_MALLOC_STACK
|
||
.sp
|
||
Whether to enable \fBMalloc Stack\fP in the Diagnostics
|
||
section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_MALLOC_STACK\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_THREAD_SANITIZER
|
||
.sp
|
||
Whether to enable \fBThread Sanitizer\fP in the Diagnostics
|
||
section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_THREAD_SANITIZER\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_THREAD_SANITIZER_STOP
|
||
.sp
|
||
Whether to enable \fBThread Sanitizer \- Pause on issues\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER
|
||
.sp
|
||
Whether to enable \fBUndefined Behavior Sanitizer\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER\fP
|
||
if it is set when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP
|
||
.sp
|
||
Whether to enable \fBUndefined Behavior Sanitizer\fP option
|
||
\fBPause on issues\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP\fP
|
||
if it is set when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_WORKING_DIRECTORY
|
||
.sp
|
||
Specify the \fBWorking Directory\fP of the \fIRun\fP and \fIProfile\fP
|
||
actions in the generated Xcode scheme. In case the value contains
|
||
generator expressions those are evaluated.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_WORKING_DIRECTORY\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCODE_SCHEME_ZOMBIE_OBJECTS
|
||
.sp
|
||
Whether to enable \fBZombie Objects\fP
|
||
in the Diagnostics section of the generated Xcode scheme.
|
||
.sp
|
||
This property is initialized by the value of the variable
|
||
\fBCMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS\fP if it is set
|
||
when a target is created.
|
||
.sp
|
||
Please refer to the \fBXCODE_GENERATE_SCHEME\fP target property
|
||
documentation to see all Xcode schema related properties.
|
||
.SS XCTEST
|
||
.sp
|
||
This target is a XCTest CFBundle on the Mac.
|
||
.sp
|
||
This property will usually get set via the \fBxctest_add_bundle()\fP
|
||
macro in \fBFindXCTest\fP module.
|
||
.sp
|
||
If a module library target has this property set to true it will be
|
||
built as a CFBundle when built on the Mac. It will have the directory
|
||
structure required for a CFBundle.
|
||
.sp
|
||
This property depends on \fBBUNDLE\fP to be effective.
|
||
.SH PROPERTIES ON TESTS
|
||
.SS ATTACHED_FILES_ON_FAIL
|
||
.sp
|
||
Attach a list of files to a dashboard submission if the test fails.
|
||
.sp
|
||
Same as \fBATTACHED_FILES\fP, but these files will only be
|
||
included if the test does not pass.
|
||
.SS ATTACHED_FILES
|
||
.sp
|
||
Attach a list of files to a dashboard submission.
|
||
.sp
|
||
Set this property to a list of files that will be encoded and
|
||
submitted to the dashboard as an addition to the test result.
|
||
.SS COST
|
||
.sp
|
||
This property describes the cost of a test. When parallel testing is
|
||
enabled, tests in the test set will be run in descending order of cost.
|
||
Projects can explicitly define the cost of a test by setting this property
|
||
to a floating point value.
|
||
.sp
|
||
When the cost of a test is not defined by the project,
|
||
\fBctest\fP will initially use a default cost of \fB0\fP\&.
|
||
It computes a weighted average of the cost each time a test is run and
|
||
uses that as an improved estimate of the cost for the next run. The more
|
||
a test is re\-run in the same build directory, the more representative the
|
||
cost should become.
|
||
.SS DEPENDS
|
||
.sp
|
||
Specifies that this test should only be run after the specified list of tests.
|
||
.sp
|
||
Set this to a list of tests that must finish before this test is run. The
|
||
results of those tests are not considered, the dependency relationship is
|
||
purely for order of execution (i.e. it is really just a \fIrun after\fP
|
||
relationship). Consider using test fixtures with setup tests if a dependency
|
||
with successful completion is required (see \fBFIXTURES_REQUIRED\fP).
|
||
.SS Examples
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_test(NAME baseTest1 ...)
|
||
add_test(NAME baseTest2 ...)
|
||
add_test(NAME dependsTest12 ...)
|
||
|
||
set_tests_properties(dependsTest12 PROPERTIES DEPENDS "baseTest1;baseTest2")
|
||
# dependsTest12 runs after baseTest1 and baseTest2, even if they fail
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS DISABLED
|
||
.sp
|
||
If set to \fBTrue\fP, the test will be skipped and its status will be ‘Not Run’. A
|
||
\fBDISABLED\fP test will not be counted in the total number of tests and its
|
||
completion status will be reported to CDash as \fBDisabled\fP\&.
|
||
.sp
|
||
A \fBDISABLED\fP test does not participate in test fixture dependency resolution.
|
||
If a \fBDISABLED\fP test has fixture requirements defined in its
|
||
\fBFIXTURES_REQUIRED\fP property, it will not cause setup or cleanup
|
||
tests for those fixtures to be added to the test set.
|
||
.sp
|
||
If a test with the \fBFIXTURES_SETUP\fP property set is \fBDISABLED\fP,
|
||
the fixture behavior will be as though that setup test was passing and any test
|
||
case requiring that fixture will still run.
|
||
.SS ENVIRONMENT
|
||
.sp
|
||
Specify environment variables that should be defined for running a test.
|
||
.sp
|
||
If set to a list of environment variables and values of the form
|
||
\fBMYVAR=value\fP those environment variables will be defined while running
|
||
the test. The environment is restored to its previous state after the
|
||
test is done.
|
||
.SS FAIL_REGULAR_EXPRESSION
|
||
.sp
|
||
If the output matches this regular expression the test will fail.
|
||
.sp
|
||
If set, if the output matches one of specified regular expressions,
|
||
the test will fail. Example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_tests_properties(mytest PROPERTIES
|
||
FAIL_REGULAR_EXPRESSION "[^a\-z]Error;ERROR;Failed"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
\fBFAIL_REGULAR_EXPRESSION\fP expects a list of regular expressions.
|
||
.SS FIXTURES_CLEANUP
|
||
.sp
|
||
Specifies a list of fixtures for which the test is to be treated as a cleanup
|
||
test. These fixture names are distinct from test case names and are not
|
||
required to have any similarity to the names of tests associated with them.
|
||
.sp
|
||
Fixture cleanup tests are ordinary tests with all of the usual test
|
||
functionality. Setting the \fBFIXTURES_CLEANUP\fP property for a test has two
|
||
primary effects:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
CTest will ensure the test executes after all other tests which list any of
|
||
the fixtures in its \fBFIXTURES_REQUIRED\fP property.
|
||
.IP \(bu 2
|
||
If CTest is asked to run only a subset of tests (e.g. using regular
|
||
expressions or the \fB\-\-rerun\-failed\fP option) and the cleanup test is not in
|
||
the set of tests to run, it will automatically be added if any tests in the
|
||
set require any fixture listed in \fBFIXTURES_CLEANUP\fP\&.
|
||
.UNINDENT
|
||
.sp
|
||
A cleanup test can have multiple fixtures listed in its \fBFIXTURES_CLEANUP\fP
|
||
property. It will execute only once for the whole CTest run, not once for each
|
||
fixture. A fixture can also have more than one cleanup test defined. If there
|
||
are multiple cleanup tests for a fixture, projects can control their order with
|
||
the usual \fBDEPENDS\fP test property if necessary.
|
||
.sp
|
||
A cleanup test is allowed to require other fixtures, but not any fixture listed
|
||
in its \fBFIXTURES_CLEANUP\fP property. For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# Ok: Dependent fixture is different to cleanup
|
||
set_tests_properties(cleanupFoo PROPERTIES
|
||
FIXTURES_CLEANUP Foo
|
||
FIXTURES_REQUIRED Bar
|
||
)
|
||
|
||
# Error: cannot require same fixture as cleanup
|
||
set_tests_properties(cleanupFoo PROPERTIES
|
||
FIXTURES_CLEANUP Foo
|
||
FIXTURES_REQUIRED Foo
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Cleanup tests will execute even if setup or regular tests for that fixture fail
|
||
or are skipped.
|
||
.sp
|
||
See \fBFIXTURES_REQUIRED\fP for a more complete discussion of how to use
|
||
test fixtures.
|
||
.SS FIXTURES_REQUIRED
|
||
.sp
|
||
Specifies a list of fixtures the test requires. Fixture names are case
|
||
sensitive and they are not required to have any similarity to test names.
|
||
.sp
|
||
Fixtures are a way to attach setup and cleanup tasks to a set of tests. If a
|
||
test requires a given fixture, then all tests marked as setup tasks for that
|
||
fixture will be executed first (once for the whole set of tests, not once per
|
||
test requiring the fixture). After all tests requiring a particular fixture
|
||
have completed, CTest will ensure all tests marked as cleanup tasks for that
|
||
fixture are then executed. Tests are marked as setup tasks with the
|
||
\fBFIXTURES_SETUP\fP property and as cleanup tasks with the
|
||
\fBFIXTURES_CLEANUP\fP property. If any of a fixture’s setup tests fail,
|
||
all tests listing that fixture in their \fBFIXTURES_REQUIRED\fP property will not
|
||
be executed. The cleanup tests for the fixture will always be executed, even if
|
||
some setup tests fail.
|
||
.sp
|
||
When CTest is asked to execute only a subset of tests (e.g. by the use of
|
||
regular expressions or when run with the \fB\-\-rerun\-failed\fP command line
|
||
option), it will automatically add any setup or cleanup tests for fixtures
|
||
required by any of the tests that are in the execution set. This behavior can
|
||
be overridden with the \fB\-FS\fP, \fB\-FC\fP and \fB\-FA\fP command line options to
|
||
\fBctest(1)\fP if desired.
|
||
.sp
|
||
Since setup and cleanup tasks are also tests, they can have an ordering
|
||
specified by the \fBDEPENDS\fP test property just like any other tests.
|
||
This can be exploited to implement setup or cleanup using multiple tests for a
|
||
single fixture to modularise setup or cleanup logic.
|
||
.sp
|
||
The concept of a fixture is different to that of a resource specified by
|
||
\fBRESOURCE_LOCK\fP, but they may be used together. A fixture defines a
|
||
set of tests which share setup and cleanup requirements, whereas a resource
|
||
lock has the effect of ensuring a particular set of tests do not run in
|
||
parallel. Some situations may need both, such as setting up a database,
|
||
serialising test access to that database and deleting the database again at the
|
||
end. For such cases, tests would populate both \fBFIXTURES_REQUIRED\fP and
|
||
\fBRESOURCE_LOCK\fP to combine the two behaviours. Names used for
|
||
\fBRESOURCE_LOCK\fP have no relationship with names of fixtures, so note
|
||
that a resource lock does not imply a fixture and vice versa.
|
||
.sp
|
||
Consider the following example which represents a database test scenario
|
||
similar to that mentioned above:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_test(NAME testsDone COMMAND emailResults)
|
||
add_test(NAME fooOnly COMMAND testFoo)
|
||
add_test(NAME dbOnly COMMAND testDb)
|
||
add_test(NAME dbWithFoo COMMAND testDbWithFoo)
|
||
add_test(NAME createDB COMMAND initDB)
|
||
add_test(NAME setupUsers COMMAND userCreation)
|
||
add_test(NAME cleanupDB COMMAND deleteDB)
|
||
add_test(NAME cleanupFoo COMMAND removeFoos)
|
||
|
||
set_tests_properties(setupUsers PROPERTIES DEPENDS createDB)
|
||
|
||
set_tests_properties(createDB PROPERTIES FIXTURES_SETUP DB)
|
||
set_tests_properties(setupUsers PROPERTIES FIXTURES_SETUP DB)
|
||
set_tests_properties(cleanupDB PROPERTIES FIXTURES_CLEANUP DB)
|
||
set_tests_properties(cleanupFoo PROPERTIES FIXTURES_CLEANUP Foo)
|
||
set_tests_properties(testsDone PROPERTIES FIXTURES_CLEANUP "DB;Foo")
|
||
|
||
set_tests_properties(fooOnly PROPERTIES FIXTURES_REQUIRED Foo)
|
||
set_tests_properties(dbOnly PROPERTIES FIXTURES_REQUIRED DB)
|
||
set_tests_properties(dbWithFoo PROPERTIES FIXTURES_REQUIRED "DB;Foo")
|
||
|
||
set_tests_properties(dbOnly dbWithFoo createDB setupUsers cleanupDB
|
||
PROPERTIES RESOURCE_LOCK DbAccess)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Key points from this example:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
Two fixtures are defined: \fBDB\fP and \fBFoo\fP\&. Tests can require a single
|
||
fixture as \fBfooOnly\fP and \fBdbOnly\fP do, or they can depend on multiple
|
||
fixtures like \fBdbWithFoo\fP does.
|
||
.IP \(bu 2
|
||
A \fBDEPENDS\fP relationship is set up to ensure \fBsetupUsers\fP happens after
|
||
\fBcreateDB\fP, both of which are setup tests for the \fBDB\fP fixture and will
|
||
therefore be executed before the \fBdbOnly\fP and \fBdbWithFoo\fP tests
|
||
automatically.
|
||
.IP \(bu 2
|
||
No explicit \fBDEPENDS\fP relationships were needed to make the setup tests run
|
||
before or the cleanup tests run after the regular tests.
|
||
.IP \(bu 2
|
||
The \fBFoo\fP fixture has no setup tests defined, only a single cleanup test.
|
||
.IP \(bu 2
|
||
\fBtestsDone\fP is a cleanup test for both the \fBDB\fP and \fBFoo\fP fixtures.
|
||
Therefore, it will only execute once regular tests for both fixtures have
|
||
finished (i.e. after \fBfooOnly\fP, \fBdbOnly\fP and \fBdbWithFoo\fP). No
|
||
\fBDEPENDS\fP relationship was specified for \fBtestsDone\fP, so it is free to
|
||
run before, after or concurrently with other cleanup tests for either
|
||
fixture.
|
||
.IP \(bu 2
|
||
The setup and cleanup tests never list the fixtures they are for in their own
|
||
\fBFIXTURES_REQUIRED\fP property, as that would result in a dependency on
|
||
themselves and be considered an error.
|
||
.UNINDENT
|
||
.SS FIXTURES_SETUP
|
||
.sp
|
||
Specifies a list of fixtures for which the test is to be treated as a setup
|
||
test. These fixture names are distinct from test case names and are not
|
||
required to have any similarity to the names of tests associated with them.
|
||
.sp
|
||
Fixture setup tests are ordinary tests with all of the usual test
|
||
functionality. Setting the \fBFIXTURES_SETUP\fP property for a test has two
|
||
primary effects:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
CTest will ensure the test executes before any other test which lists the
|
||
fixture name(s) in its \fBFIXTURES_REQUIRED\fP property.
|
||
.IP \(bu 2
|
||
If CTest is asked to run only a subset of tests (e.g. using regular
|
||
expressions or the \fB\-\-rerun\-failed\fP option) and the setup test is not in
|
||
the set of tests to run, it will automatically be added if any tests in the
|
||
set require any fixture listed in \fBFIXTURES_SETUP\fP\&.
|
||
.UNINDENT
|
||
.sp
|
||
A setup test can have multiple fixtures listed in its \fBFIXTURES_SETUP\fP
|
||
property. It will execute only once for the whole CTest run, not once for each
|
||
fixture. A fixture can also have more than one setup test defined. If there are
|
||
multiple setup tests for a fixture, projects can control their order with the
|
||
usual \fBDEPENDS\fP test property if necessary.
|
||
.sp
|
||
A setup test is allowed to require other fixtures, but not any fixture listed
|
||
in its \fBFIXTURES_SETUP\fP property. For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# Ok: dependent fixture is different to setup
|
||
set_tests_properties(setupFoo PROPERTIES
|
||
FIXTURES_SETUP Foo
|
||
FIXTURES_REQUIRED Bar
|
||
)
|
||
|
||
# Error: cannot require same fixture as setup
|
||
set_tests_properties(setupFoo PROPERTIES
|
||
FIXTURES_SETUP Foo
|
||
FIXTURES_REQUIRED Foo
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
If any of a fixture’s setup tests fail, none of the tests listing that fixture
|
||
in its \fBFIXTURES_REQUIRED\fP property will be run. Cleanup tests will,
|
||
however, still be executed.
|
||
.sp
|
||
See \fBFIXTURES_REQUIRED\fP for a more complete discussion of how to use
|
||
test fixtures.
|
||
.SS LABELS
|
||
.sp
|
||
Specify a list of text labels associated with a test.
|
||
.sp
|
||
The list is reported in dashboard submissions.
|
||
.SS MEASUREMENT
|
||
.sp
|
||
Specify a \fBCDASH\fP measurement and value to be reported for a test.
|
||
.sp
|
||
If set to a name then that name will be reported to \fBCDASH\fP as a named
|
||
measurement with a value of \fB1\fP\&. You may also specify a value by
|
||
setting \fBMEASUREMENT\fP to \fBmeasurement=value\fP\&.
|
||
.SS PASS_REGULAR_EXPRESSION
|
||
.sp
|
||
The output must match this regular expression for the test to pass.
|
||
.sp
|
||
If set, the test output will be checked against the specified regular
|
||
expressions and at least one of the regular expressions has to match,
|
||
otherwise the test will fail. Example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_tests_properties(mytest PROPERTIES
|
||
PASS_REGULAR_EXPRESSION "TestPassed;All ok"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
\fBPASS_REGULAR_EXPRESSION\fP expects a list of regular expressions.
|
||
.SS PROCESSOR_AFFINITY
|
||
.sp
|
||
Set to a true value to ask CTest to launch the test process with CPU affinity
|
||
for a fixed set of processors. If enabled and supported for the current
|
||
platform, CTest will choose a set of processors to place in the CPU affinity
|
||
mask when launching the test process. The number of processors in the set is
|
||
determined by the \fBPROCESSORS\fP test property or the number of
|
||
processors available to CTest, whichever is smaller. The set of processors
|
||
chosen will be disjoint from the processors assigned to other concurrently
|
||
running tests that also have the \fBPROCESSOR_AFFINITY\fP property enabled.
|
||
.SS PROCESSORS
|
||
.sp
|
||
Set to specify how many process slots this test requires.
|
||
If not set, the default is \fB1\fP processor.
|
||
.sp
|
||
Denotes the number of processors that this test will require. This is
|
||
typically used for MPI tests, and should be used in conjunction with
|
||
the \fBctest_test()\fP \fBPARALLEL_LEVEL\fP option.
|
||
.sp
|
||
This will also be used to display a weighted test timing result in label and
|
||
subproject summaries in the command line output of \fBctest(1)\fP\&. The wall
|
||
clock time for the test run will be multiplied by this property to give a
|
||
better idea of how much cpu resource CTest allocated for the test.
|
||
.sp
|
||
See also the \fBPROCESSOR_AFFINITY\fP test property.
|
||
.SS REQUIRED_FILES
|
||
.sp
|
||
List of files required to run the test. The filenames are relative to the
|
||
test \fBWORKING_DIRECTORY\fP unless an absolute path is specified.
|
||
.sp
|
||
If set to a list of files, the test will not be run unless all of the
|
||
files exist.
|
||
.SS Examples
|
||
.sp
|
||
Suppose that \fBtest.txt\fP is created by test \fBbaseTest\fP and \fBnone.txt\fP
|
||
does not exist:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_test(NAME baseTest ...) # Assumed to create test.txt
|
||
add_test(NAME fileTest ...)
|
||
|
||
# The following ensures that if baseTest is successful, test.txt will
|
||
# have been created before fileTest is run
|
||
set_tests_properties(fileTest PROPERTIES
|
||
DEPENDS baseTest
|
||
REQUIRED_FILES test.txt
|
||
)
|
||
|
||
add_test(NAME notRunTest ...)
|
||
|
||
# The following makes notRunTest depend on two files. Nothing creates
|
||
# the none.txt file, so notRunTest will fail with status "Not Run".
|
||
set_tests_properties(notRunTest PROPERTIES
|
||
REQUIRED_FILES "test.txt;none.txt"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
The above example demonstrates how \fBREQUIRED_FILES\fP works, but it is not the
|
||
most robust way to implement test ordering with failure detection. For that,
|
||
test fixtures are a better alternative (see \fBFIXTURES_REQUIRED\fP).
|
||
.SS RESOURCE_GROUPS
|
||
.sp
|
||
Specify resources required by a test, grouped in a way that is meaningful to
|
||
the test. See resource allocation
|
||
for more information on how this property integrates into the CTest resource
|
||
allocation feature.
|
||
.sp
|
||
The \fBRESOURCE_GROUPS\fP property is a semicolon\-separated list of group descriptions. Each entry consists of an optional
|
||
number of groups using the description followed by a series of resource
|
||
requirements for those groups. These requirements (and the number of groups)
|
||
are separated by commas. The resource requirements consist of the name of a
|
||
resource type, followed by a colon, followed by an unsigned integer
|
||
specifying the number of slots required on one resource of the given type.
|
||
.sp
|
||
The \fBRESOURCE_GROUPS\fP property tells CTest what resources a test expects
|
||
to use grouped in a way meaningful to the test. The test itself must read
|
||
the environment variables to
|
||
determine which resources have been allocated to each group. For example,
|
||
each group may correspond to a process the test will spawn when executed.
|
||
.sp
|
||
Consider the following example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_test(NAME MyTest COMMAND MyExe)
|
||
set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
|
||
"2,gpus:2"
|
||
"gpus:4,crypto_chips:2")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
In this example, there are two group descriptions (implicitly separated by a
|
||
semicolon.) The content of the first description is \fB2,gpus:2\fP\&. This
|
||
description specifies 2 groups, each of which requires 2 slots from a single
|
||
GPU. The content of the second description is \fBgpus:4,crypto_chips:2\fP\&. This
|
||
description does not specify a group count, so a default of 1 is assumed.
|
||
This single group requires 4 slots from a single GPU and 2 slots from a
|
||
single cryptography chip. In total, 3 resource groups are specified for this
|
||
test, each with its own unique requirements.
|
||
.sp
|
||
Note that the number of slots following the resource type specifies slots from
|
||
a \fIsingle\fP instance of the resource. If the resource group can tolerate
|
||
receiving slots from different instances of the same resource, it can indicate
|
||
this by splitting the specification into multiple requirements of one slot. For
|
||
example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_test(NAME MyTest COMMAND MyExe)
|
||
set_property(TEST MyTest PROPERTY RESOURCE_GROUPS
|
||
"gpus:1,gpus:1,gpus:1,gpus:1")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
In this case, the single resource group indicates that it needs four GPU slots,
|
||
all of which may come from separate GPUs (though they don’t have to; CTest may
|
||
still assign slots from the same GPU.)
|
||
.sp
|
||
When CTest sets the environment variables for a test, it assigns a group number
|
||
based on the group description, starting at 0 on the left and the number of
|
||
groups minus 1 on the right. For example, in the example above, the two
|
||
groups in the first description would have IDs of 0 and 1, and the single
|
||
group in the second description would have an ID of 2.
|
||
.sp
|
||
Both the \fBRESOURCE_GROUPS\fP and \fBRESOURCE_LOCK\fP properties serve
|
||
similar purposes, but they are distinct and orthogonal. Resources specified by
|
||
\fBRESOURCE_GROUPS\fP do not affect \fBRESOURCE_LOCK\fP, and vice versa.
|
||
Whereas \fBRESOURCE_LOCK\fP is a simpler property that is used for
|
||
locking one global resource, \fBRESOURCE_GROUPS\fP is a more advanced property
|
||
that allows multiple tests to simultaneously use multiple resources of the
|
||
same type, specifying their requirements in a fine\-grained manner.
|
||
.SS RESOURCE_LOCK
|
||
.sp
|
||
Specify a list of resources that are locked by this test.
|
||
.sp
|
||
If multiple tests specify the same resource lock, they are guaranteed
|
||
not to run concurrently.
|
||
.sp
|
||
See also \fBFIXTURES_REQUIRED\fP if the resource requires any setup or
|
||
cleanup steps.
|
||
.sp
|
||
Both the \fBRESOURCE_GROUPS\fP and \fBRESOURCE_LOCK\fP properties serve
|
||
similar purposes, but they are distinct and orthogonal. Resources specified by
|
||
\fBRESOURCE_GROUPS\fP do not affect \fBRESOURCE_LOCK\fP, and vice versa.
|
||
Whereas \fBRESOURCE_LOCK\fP is a simpler property that is used for locking one
|
||
global resource, \fBRESOURCE_GROUPS\fP is a more advanced property
|
||
that allows multiple tests to simultaneously use multiple resources of the
|
||
same type, specifying their requirements in a fine\-grained manner.
|
||
.SS RUN_SERIAL
|
||
.sp
|
||
Do not run this test in parallel with any other test.
|
||
.sp
|
||
Use this option in conjunction with the ctest_test \fBPARALLEL_LEVEL\fP
|
||
option to specify that this test should not be run in parallel with
|
||
any other tests.
|
||
.SS SKIP_REGULAR_EXPRESSION
|
||
.sp
|
||
If the output matches this regular expression the test will be marked as skipped.
|
||
.sp
|
||
If set, if the output matches one of specified regular expressions,
|
||
the test will be marked as skipped. Example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(TEST mytest PROPERTY
|
||
SKIP_REGULAR_EXPRESSION "[^a\-z]Skip" "SKIP" "Skipped"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
\fBSKIP_REGULAR_EXPRESSION\fP expects a list of regular expressions.
|
||
.sp
|
||
See also the \fBSKIP_RETURN_CODE\fP property.
|
||
.SS SKIP_RETURN_CODE
|
||
.sp
|
||
Return code to mark a test as skipped.
|
||
.sp
|
||
Sometimes only a test itself can determine if all requirements for the
|
||
test are met. If such a situation should not be considered a hard failure
|
||
a return code of the process can be specified that will mark the test as
|
||
\fBNot Run\fP if it is encountered. Valid values are in the range of
|
||
0 to 255, inclusive.
|
||
.sp
|
||
See also the \fBSKIP_REGULAR_EXPRESSION\fP property.
|
||
.SS TIMEOUT
|
||
.sp
|
||
How many seconds to allow for this test.
|
||
.sp
|
||
This property if set will limit a test to not take more than the
|
||
specified number of seconds to run. If it exceeds that the test
|
||
process will be killed and ctest will move to the next test. This
|
||
setting takes precedence over \fBCTEST_TEST_TIMEOUT\fP\&.
|
||
.SS TIMEOUT_AFTER_MATCH
|
||
.sp
|
||
Change a test’s timeout duration after a matching line is encountered
|
||
in its output.
|
||
.SS Usage
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
add_test(mytest ...)
|
||
set_property(TEST mytest PROPERTY TIMEOUT_AFTER_MATCH "${seconds}" "${regex}")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS Description
|
||
.sp
|
||
Allow a test \fBseconds\fP to complete after \fBregex\fP is encountered in
|
||
its output.
|
||
.sp
|
||
When the test outputs a line that matches \fBregex\fP its start time is
|
||
reset to the current time and its timeout duration is changed to
|
||
\fBseconds\fP\&. Prior to this, the timeout duration is determined by the
|
||
\fBTIMEOUT\fP property or the \fBCTEST_TEST_TIMEOUT\fP
|
||
variable if either of these are set. Because the test’s start time is
|
||
reset, its execution time will not include any time that was spent
|
||
waiting for the matching output.
|
||
.sp
|
||
\fI\%TIMEOUT_AFTER_MATCH\fP is useful for avoiding spurious
|
||
timeouts when your test must wait for some system resource to become
|
||
available before it can execute. Set \fBTIMEOUT\fP to a longer
|
||
duration that accounts for resource acquisition and use
|
||
\fI\%TIMEOUT_AFTER_MATCH\fP to control how long the actual test
|
||
is allowed to run.
|
||
.sp
|
||
If the required resource can be controlled by CTest you should use
|
||
\fBRESOURCE_LOCK\fP instead of \fI\%TIMEOUT_AFTER_MATCH\fP\&.
|
||
This property should be used when only the test itself can determine
|
||
when its required resources are available.
|
||
.SS WILL_FAIL
|
||
.sp
|
||
If set to true, this will invert the pass/fail flag of the test.
|
||
.sp
|
||
This property can be used for tests that are expected to fail and
|
||
return a non zero return code.
|
||
.SS WORKING_DIRECTORY
|
||
.sp
|
||
The directory from which the test executable will be called.
|
||
.sp
|
||
If this is not set, the test will be run with the working directory set to the
|
||
binary directory associated with where the test was created (i.e. the
|
||
\fBCMAKE_CURRENT_BINARY_DIR\fP for where \fBadd_test()\fP was
|
||
called).
|
||
.SH PROPERTIES ON SOURCE FILES
|
||
.SS ABSTRACT
|
||
.sp
|
||
Is this source file an abstract class.
|
||
.sp
|
||
A property on a source file that indicates if the source file
|
||
represents a class that is abstract. This only makes sense for
|
||
languages that have a notion of an abstract class and it is only used
|
||
by some tools that wrap classes into other languages.
|
||
.SS AUTORCC_OPTIONS
|
||
.sp
|
||
Additional options for \fBrcc\fP when using \fBAUTORCC\fP
|
||
.sp
|
||
This property holds additional command line options which will be used when
|
||
\fBrcc\fP is executed during the build via \fBAUTORCC\fP, i.e. it is equivalent to the
|
||
optional \fBOPTIONS\fP argument of the \fBqt4_add_resources()\fP macro.
|
||
.sp
|
||
By default it is empty.
|
||
.sp
|
||
The options set on the \fB\&.qrc\fP source file may override
|
||
\fBAUTORCC_OPTIONS\fP set on the target.
|
||
.SS EXAMPLE
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# ...
|
||
set_property(SOURCE resources.qrc PROPERTY AUTORCC_OPTIONS "\-\-compress;9")
|
||
# ...
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS AUTOUIC_OPTIONS
|
||
.sp
|
||
Additional options for \fBuic\fP when using \fBAUTOUIC\fP
|
||
.sp
|
||
This property holds additional command line options
|
||
which will be used when \fBuic\fP is executed during the build via
|
||
\fBAUTOUIC\fP, i.e. it is equivalent to the optional \fBOPTIONS\fP
|
||
argument of the \fBqt4_wrap_ui()\fP macro.
|
||
.sp
|
||
By default it is empty.
|
||
.sp
|
||
The options set on the \fB\&.ui\fP source file may override
|
||
\fBAUTOUIC_OPTIONS\fP set on the target.
|
||
.SS EXAMPLE
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# ...
|
||
set_property(SOURCE widget.ui PROPERTY AUTOUIC_OPTIONS "\-\-no\-protection")
|
||
# ...
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS COMPILE_DEFINITIONS
|
||
.sp
|
||
Preprocessor definitions for compiling a source file.
|
||
.sp
|
||
The \fBCOMPILE_DEFINITIONS\fP property may be set to a semicolon\-separated
|
||
list of preprocessor definitions using the syntax \fBVAR\fP or \fBVAR=value\fP\&.
|
||
Function\-style definitions are not supported. CMake will
|
||
automatically escape the value correctly for the native build system
|
||
(note that CMake language syntax may require escapes to specify some
|
||
values). This property may be set on a per\-configuration basis using
|
||
the name \fBCOMPILE_DEFINITIONS_<CONFIG>\fP where \fB<CONFIG>\fP is an upper\-case
|
||
name (ex. \fBCOMPILE_DEFINITIONS_DEBUG\fP).
|
||
.sp
|
||
CMake will automatically drop some definitions that are not supported
|
||
by the native build tool. Xcode does not support per\-configuration
|
||
definitions on source files.
|
||
.sp
|
||
Disclaimer: Most native build tools have poor support for escaping
|
||
certain values. CMake has work\-arounds for many cases but some values
|
||
may just not be possible to pass correctly. If a value does not seem
|
||
to be escaped correctly, do not attempt to work\-around the problem by
|
||
adding escape sequences to the value. Your work\-around may break in a
|
||
future version of CMake that has improved escape support. Instead
|
||
consider defining the macro in a (configured) header file. Then
|
||
report the limitation. Known limitations include:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# \- broken almost everywhere
|
||
; \- broken in VS IDE 7.0 and Borland Makefiles
|
||
, \- broken in VS IDE
|
||
% \- broken in some cases in NMake
|
||
& | \- broken in some cases on MinGW
|
||
^ < > \e" \- broken in most Make tools on Windows
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
CMake does not reject these values outright because they do work in
|
||
some cases. Use with caution.
|
||
.sp
|
||
Contents of \fBCOMPILE_DEFINITIONS\fP may use \fBcmake\-generator\-expressions(7)\fP
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. However, \fBXcode\fP
|
||
does not support per\-config per\-source settings, so expressions
|
||
that depend on the build configuration are not allowed with that
|
||
generator.
|
||
.sp
|
||
Generator expressions should be preferred instead of setting the alternative per\-configuration
|
||
property.
|
||
.SS COMPILE_FLAGS
|
||
.sp
|
||
Additional flags to be added when compiling this source file.
|
||
.sp
|
||
The \fBCOMPILE_FLAGS\fP property, managed as a string, sets additional compiler
|
||
flags used to build source files. Use \fBCOMPILE_DEFINITIONS\fP to pass
|
||
additional preprocessor definitions.
|
||
.sp
|
||
Contents of \fBCOMPILE_FLAGS\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. However, \fBXcode\fP
|
||
does not support per\-config per\-source settings, so expressions
|
||
that depend on the build configuration are not allowed with that
|
||
generator.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
This property has been superseded by the \fBCOMPILE_OPTIONS\fP property.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS COMPILE_OPTIONS
|
||
.sp
|
||
List of additional options to pass to the compiler.
|
||
.sp
|
||
This property holds a semicolon\-separated list of options
|
||
and will be added to the list of compile flags when this
|
||
source file builds.
|
||
.sp
|
||
Contents of \fBCOMPILE_OPTIONS\fP may use “generator expressions” with the
|
||
syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. However, \fBXcode\fP
|
||
does not support per\-config per\-source settings, so expressions
|
||
that depend on the build configuration are not allowed with that
|
||
generator.
|
||
.sp
|
||
Usage example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_source_files_properties(foo.cpp PROPERTIES COMPILE_OPTIONS "\-Wno\-unused\-parameter;\-Wno\-missing\-field\-initializer")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Related properties:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
Prefer this property over \fBCOMPILE_FLAGS\fP\&.
|
||
.IP \(bu 2
|
||
Use \fBCOMPILE_DEFINITIONS\fP to pass additional preprocessor definitions.
|
||
.IP \(bu 2
|
||
Use \fBINCLUDE_DIRECTORIES\fP to pass additional include directories.
|
||
.UNINDENT
|
||
.sp
|
||
Related commands:
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
\fBadd_compile_options()\fP for directory\-wide settings
|
||
.IP \(bu 2
|
||
\fBtarget_compile_options()\fP for target\-specific settings
|
||
.UNINDENT
|
||
.SS EXTERNAL_OBJECT
|
||
.sp
|
||
If set to true then this is an object file.
|
||
.sp
|
||
If this property is set to \fBTrue\fP then the source file is really an
|
||
object file and should not be compiled. It will still be linked into
|
||
the target though.
|
||
.SS Fortran_FORMAT
|
||
.sp
|
||
Set to \fBFIXED\fP or \fBFREE\fP to indicate the Fortran source layout.
|
||
.sp
|
||
This property tells CMake whether a given Fortran source file uses
|
||
fixed\-format or free\-format. CMake will pass the corresponding format flag
|
||
to the compiler. Consider using the target\-wide \fBFortran_FORMAT\fP
|
||
property if all source files in a target share the same format.
|
||
.sp
|
||
\fBNOTE:\fP
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
For some compilers, \fBNAG\fP, \fBPGI\fP and \fBSolaris Studio\fP,
|
||
setting this to \fBOFF\fP will have no effect.
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS Fortran_PREPROCESS
|
||
.sp
|
||
Control whether the Fortran source file should be unconditionally preprocessed.
|
||
.sp
|
||
If unset or empty, rely on the compiler to determine whether the file
|
||
should be preprocessed. If explicitly set to \fBOFF\fP then the file
|
||
does not need to be preprocessed. If explicitly set to \fBON\fP, then
|
||
the file does need to be preprocessed as part of the compilation step.
|
||
.sp
|
||
When using the \fBNinja\fP generator, all source files are
|
||
first preprocessed in order to generate module dependency
|
||
information. Setting this property to \fBOFF\fP will make \fBNinja\fP
|
||
skip this step.
|
||
.sp
|
||
Consider using the target\-wide \fBFortran_PREPROCESS\fP property
|
||
if all source files in a target need to be preprocessed.
|
||
.SS GENERATED
|
||
.sp
|
||
Is this source file generated as part of the build or CMake process.
|
||
.sp
|
||
Tells the internal CMake engine that a source file is generated by an outside
|
||
process such as another build step, or the execution of CMake itself.
|
||
This information is then used to exempt the file from any existence or
|
||
validity checks.
|
||
.sp
|
||
Any file that is
|
||
.INDENT 0.0
|
||
.IP \(bu 2
|
||
created by the execution of commands such as
|
||
\fBadd_custom_command()\fP and \fBfile(GENERATE)\fP
|
||
.IP \(bu 2
|
||
listed as one of the \fBBYPRODUCTS\fP of an \fBadd_custom_command()\fP
|
||
or \fBadd_custom_target()\fP command, or
|
||
.IP \(bu 2
|
||
created by a CMake \fBAUTOGEN\fP operation such as \fBAUTOMOC\fP,
|
||
\fBAUTORCC\fP, or \fBAUTOUIC\fP
|
||
.UNINDENT
|
||
.sp
|
||
will be marked with the \fBGENERATED\fP property.
|
||
.sp
|
||
When a generated file created as the \fBOUTPUT\fP of an
|
||
\fBadd_custom_command()\fP command is explicitly listed as a source file
|
||
for any target in the same directory scope (which usually means the same
|
||
\fBCMakeLists.txt\fP file), CMake will automatically create a dependency to
|
||
make sure the file is generated before building that target.
|
||
.sp
|
||
The Makefile Generators will remove \fBGENERATED\fP files during
|
||
\fBmake clean\fP\&.
|
||
.sp
|
||
Generated sources may be hidden in some IDE tools, while in others they might
|
||
be shown. For the special case of sources generated by CMake’s \fBAUTOMOC\fP
|
||
or \fBAUTORCC\fP functionality, the \fBAUTOGEN_SOURCE_GROUP\fP,
|
||
\fBAUTOMOC_SOURCE_GROUP\fP and \fBAUTORCC_SOURCE_GROUP\fP target
|
||
properties may influence where the generated sources are grouped in the project’s
|
||
file lists.
|
||
.SS HEADER_FILE_ONLY
|
||
.sp
|
||
Is this source file only a header file.
|
||
.sp
|
||
A property on a source file that indicates if the source file is a
|
||
header file with no associated implementation. This is set
|
||
automatically based on the file extension and is used by CMake to
|
||
determine if certain dependency information should be computed.
|
||
.sp
|
||
By setting this property to \fBON\fP, you can disable compilation of
|
||
the given source file, even if it should be compiled because it is
|
||
part of the library’s/executable’s sources.
|
||
.sp
|
||
This is useful if you have some source files which you somehow
|
||
pre\-process, and then add these pre\-processed sources via
|
||
\fBadd_library()\fP or \fBadd_executable()\fP\&. Normally, in IDE,
|
||
there would be no reference of the original sources, only of these
|
||
pre\-processed sources. So by setting this property for all the original
|
||
source files to \fBON\fP, and then either calling \fBadd_library()\fP
|
||
or \fBadd_executable()\fP while passing both the pre\-processed
|
||
sources and the original sources, or by using \fBtarget_sources()\fP
|
||
to add original source files will do exactly what would one expect, i.e.
|
||
the original source files would be visible in IDE, and will not be built.
|
||
.SS INCLUDE_DIRECTORIES
|
||
.sp
|
||
List of preprocessor include file search directories.
|
||
.sp
|
||
This property holds a semicolon\-separated list of paths
|
||
and will be added to the list of include directories when this
|
||
source file builds. These directories will take precedence over directories
|
||
defined at target level except for \fBXcode\fP generator due to technical
|
||
limitations.
|
||
.sp
|
||
Relative paths should not be added to this property directly.
|
||
.sp
|
||
Contents of \fBINCLUDE_DIRECTORIES\fP may use “generator expressions” with
|
||
the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP manual
|
||
for available expressions. However, \fBXcode\fP does not support
|
||
per\-config per\-source settings, so expressions that depend on the build
|
||
configuration are not allowed with that generator.
|
||
.SS KEEP_EXTENSION
|
||
.sp
|
||
Make the output file have the same extension as the source file.
|
||
.sp
|
||
If this property is set then the file extension of the output file
|
||
will be the same as that of the source file. Normally the output file
|
||
extension is computed based on the language of the source file, for
|
||
example \fB\&.cxx\fP will go to a \fB\&.o\fP extension.
|
||
.SS LABELS
|
||
.sp
|
||
Specify a list of text labels associated with a source file.
|
||
.sp
|
||
This property has meaning only when the source file is listed in a
|
||
target whose \fBLABELS\fP property is also set. No other semantics are
|
||
currently specified.
|
||
.SS LANGUAGE
|
||
.sp
|
||
What programming language is the file.
|
||
.sp
|
||
A property that can be set to indicate what programming language the
|
||
source file is. If it is not set the language is determined based on
|
||
the file extension. Typical values are \fBCXX\fP (i.e. C++), \fBC\fP,
|
||
\fBCSharp\fP, \fBCUDA\fP, \fBFortran\fP, and \fBASM\fP\&. Setting this
|
||
property for a file means this file will be compiled. Do not set this
|
||
for headers or files that should not be compiled.
|
||
.SS LOCATION
|
||
.sp
|
||
The full path to a source file.
|
||
.sp
|
||
A read only property on a SOURCE FILE that contains the full path to
|
||
the source file.
|
||
.SS MACOSX_PACKAGE_LOCATION
|
||
.sp
|
||
Place a source file inside a Application Bundle
|
||
(\fBMACOSX_BUNDLE\fP), Core Foundation Bundle (\fBBUNDLE\fP),
|
||
or Framework Bundle (\fBFRAMEWORK\fP). It is applicable for macOS
|
||
and iOS.
|
||
.sp
|
||
Executable targets with the \fBMACOSX_BUNDLE\fP property set are
|
||
built as macOS or iOS application bundles on Apple platforms. Shared
|
||
library targets with the \fBFRAMEWORK\fP property set are built as
|
||
macOS or iOS frameworks on Apple platforms. Module library targets with
|
||
the \fBBUNDLE\fP property set are built as macOS \fBCFBundle\fP bundles
|
||
on Apple platforms. Source files listed in the target with this property
|
||
set will be copied to a directory inside the bundle or framework content
|
||
folder specified by the property value. For macOS Application Bundles the
|
||
content folder is \fB<name>.app/Contents\fP\&. For macOS Frameworks the
|
||
content folder is \fB<name>.framework/Versions/<version>\fP\&. For macOS
|
||
CFBundles the content folder is \fB<name>.bundle/Contents\fP (unless the
|
||
extension is changed). See the \fBPUBLIC_HEADER\fP,
|
||
\fBPRIVATE_HEADER\fP, and \fBRESOURCE\fP target properties for
|
||
specifying files meant for \fBHeaders\fP, \fBPrivateHeaders\fP, or
|
||
\fBResources\fP directories.
|
||
.sp
|
||
If the specified location is equal to \fBResources\fP, the resulting location
|
||
will be the same as if the \fBRESOURCE\fP property had been used. If
|
||
the specified location is a sub\-folder of \fBResources\fP, it will be placed
|
||
into the respective sub\-folder. Note: For iOS Apple uses a flat bundle layout
|
||
where no \fBResources\fP folder exist. Therefore CMake strips the \fBResources\fP
|
||
folder name from the specified location.
|
||
.SS OBJECT_DEPENDS
|
||
.sp
|
||
Additional files on which a compiled object file depends.
|
||
.sp
|
||
Specifies a semicolon\-separated list of full\-paths to
|
||
files on which any object files compiled from this source file depend.
|
||
On Makefile Generators and the \fBNinja\fP generator an
|
||
object file will be recompiled if any of the named files is newer than it.
|
||
Visual Studio Generators and the \fBXcode\fP generator
|
||
cannot implement such compilation dependencies.
|
||
.sp
|
||
This property need not be used to specify the dependency of a source
|
||
file on a generated header file that it includes. Although the
|
||
property was originally introduced for this purpose, it is no longer
|
||
necessary. If the generated header file is created by a custom
|
||
command in the same target as the source file, the automatic
|
||
dependency scanning process will recognize the dependency. If the
|
||
generated header file is created by another target, an inter\-target
|
||
dependency should be created with the \fBadd_dependencies()\fP
|
||
command (if one does not already exist due to linking relationships).
|
||
.SS OBJECT_OUTPUTS
|
||
.sp
|
||
Additional outputs for a \fBNinja\fP or Makefile Generators rule.
|
||
.sp
|
||
Additional outputs created by compilation of this source file. If any
|
||
of these outputs is missing the object will be recompiled. This is
|
||
supported only on the \fBNinja\fP and Makefile Generators
|
||
and will be ignored on other generators.
|
||
.sp
|
||
This property supports
|
||
\fBgenerator expressions\fP\&.
|
||
.SS SKIP_AUTOGEN
|
||
.sp
|
||
Exclude the source file from \fBAUTOMOC\fP, \fBAUTOUIC\fP and
|
||
\fBAUTORCC\fP processing (for Qt projects).
|
||
.sp
|
||
For finer exclusion control see \fBSKIP_AUTOMOC\fP,
|
||
\fBSKIP_AUTOUIC\fP and \fBSKIP_AUTORCC\fP\&.
|
||
.SS EXAMPLE
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# ...
|
||
set_property(SOURCE file.h PROPERTY SKIP_AUTOGEN ON)
|
||
# ...
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS SKIP_AUTOMOC
|
||
.sp
|
||
Exclude the source file from \fBAUTOMOC\fP processing (for Qt projects).
|
||
.sp
|
||
For broader exclusion control see \fBSKIP_AUTOGEN\fP\&.
|
||
.SS EXAMPLE
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# ...
|
||
set_property(SOURCE file.h PROPERTY SKIP_AUTOMOC ON)
|
||
# ...
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS SKIP_AUTORCC
|
||
.sp
|
||
Exclude the source file from \fBAUTORCC\fP processing (for Qt projects).
|
||
.sp
|
||
For broader exclusion control see \fBSKIP_AUTOGEN\fP\&.
|
||
.SS EXAMPLE
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# ...
|
||
set_property(SOURCE file.qrc PROPERTY SKIP_AUTORCC ON)
|
||
# ...
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS SKIP_AUTOUIC
|
||
.sp
|
||
Exclude the source file from \fBAUTOUIC\fP processing (for Qt projects).
|
||
.sp
|
||
\fI\%SKIP_AUTOUIC\fP can be set on C++ header and source files and on
|
||
\fB\&.ui\fP files.
|
||
.sp
|
||
For broader exclusion control see \fBSKIP_AUTOGEN\fP\&.
|
||
.SS EXAMPLE
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
# ...
|
||
set_property(SOURCE file.h PROPERTY SKIP_AUTOUIC ON)
|
||
set_property(SOURCE file.cpp PROPERTY SKIP_AUTOUIC ON)
|
||
set_property(SOURCE widget.ui PROPERTY SKIP_AUTOUIC ON)
|
||
# ...
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS SKIP_PRECOMPILE_HEADERS
|
||
.sp
|
||
Is this source file skipped by \fBPRECOMPILE_HEADERS\fP feature.
|
||
.sp
|
||
This property helps with build problems that one would run into
|
||
when using the \fBPRECOMPILE_HEADERS\fP feature.
|
||
.sp
|
||
One example would be the usage of Objective\-C (\fB*.m\fP) files, and
|
||
Objective\-C++ (\fB*.mm\fP) files, which lead to compilation failure
|
||
because they are treated (in case of Ninja / Makefile generator)
|
||
as C, and CXX respectively. The precompile headers are not
|
||
compatible between languages.
|
||
.SS SKIP_UNITY_BUILD_INCLUSION
|
||
.sp
|
||
Setting this property to true ensures the source file will be skipped by
|
||
unity builds when its associated target has its \fBUNITY_BUILD\fP
|
||
property set to true. The source file will instead be compiled on its own
|
||
in the same way as it would with unity builds disabled.
|
||
.sp
|
||
This property helps with “ODR (One definition rule)” problems where combining
|
||
a particular source file with others might lead to build errors or other
|
||
unintended side effects.
|
||
.SS Swift_DEPENDENCIES_FILE
|
||
.sp
|
||
This property sets the path for the Swift dependency file (swiftdeps) for the
|
||
source. If one is not specified, it will default to \fB<OBJECT>.swiftdeps\fP\&.
|
||
.SS Swift_DIAGNOSTICS_FILE
|
||
.sp
|
||
This property controls where the Swift diagnostics are serialized.
|
||
.SS SYMBOLIC
|
||
.sp
|
||
Is this just a name for a rule.
|
||
.sp
|
||
If \fBSYMBOLIC\fP (boolean) is set to \fBTrue\fP the build system will be informed
|
||
that the source file is not actually created on disk but instead used
|
||
as a symbolic name for a build rule.
|
||
.SS UNITY_GROUP
|
||
.sp
|
||
This property controls which \fIbucket\fP the source will be part of when
|
||
the \fBUNITY_BUILD_MODE\fP is set to \fBGROUP\fP\&.
|
||
.SS VS_COPY_TO_OUT_DIR
|
||
.sp
|
||
Sets the \fB<CopyToOutputDirectory>\fP tag for a source file in a
|
||
Visual Studio project file. Valid values are \fBNever\fP, \fBAlways\fP
|
||
and \fBPreserveNewest\fP\&.
|
||
.SS VS_CSHARP_<tagname>
|
||
.sp
|
||
Visual Studio and CSharp source\-file\-specific configuration.
|
||
.sp
|
||
Tell the \fBVisual Studio generators\fP
|
||
to set the source file tag \fB<tagname>\fP
|
||
to a given value in the generated Visual Studio CSharp
|
||
project. Ignored on other generators and languages. This property
|
||
can be used to define dependencies between source files or set any
|
||
other Visual Studio specific parameters.
|
||
.sp
|
||
Example usage:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_source_files_property(<filename>
|
||
PROPERTIES
|
||
VS_CSHARP_DependentUpon <other file>
|
||
VS_CSHARP_SubType "Form")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS VS_DEPLOYMENT_CONTENT
|
||
.sp
|
||
Mark a source file as content for deployment with a Windows Phone or
|
||
Windows Store application when built with a
|
||
\fBVisual Studio generators\fP\&.
|
||
The value must evaluate to either \fB1\fP or \fB0\fP and may use
|
||
\fBgenerator expressions\fP
|
||
to make the choice based on the build configuration.
|
||
The \fB\&.vcxproj\fP file entry for the source file will be
|
||
marked either \fBDeploymentContent\fP or \fBExcludedFromBuild\fP
|
||
for values \fB1\fP and \fB0\fP, respectively.
|
||
.SS VS_DEPLOYMENT_LOCATION
|
||
.sp
|
||
Specifies the deployment location for a content source file with a Windows
|
||
Phone or Windows Store application when built
|
||
with a \fBVisual Studio generators\fP\&.
|
||
This property is only applicable when using \fBVS_DEPLOYMENT_CONTENT\fP\&.
|
||
The value represent the path relative to the app package and applies to all
|
||
configurations.
|
||
.SS VS_INCLUDE_IN_VSIX
|
||
.sp
|
||
Boolean property to specify if the file should be included within a
|
||
VSIX (Visual Studio Integration Extension) extension package.
|
||
This is needed for development of Visual Studio extensions.
|
||
.SS VS_RESOURCE_GENERATOR
|
||
.sp
|
||
This property allows to specify the resource generator to be used
|
||
on this file. It defaults to \fBPublicResXFileCodeGenerator\fP if
|
||
not set.
|
||
.sp
|
||
This property only applies to C# projects.
|
||
.SS VS_SETTINGS
|
||
.sp
|
||
Set any item metadata on a non\-built file.
|
||
.sp
|
||
Takes a list of \fBKey=Value\fP pairs. Tells the Visual Studio generator to set
|
||
\fBKey\fP to \fBValue\fP as item metadata on the file.
|
||
.sp
|
||
For example:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_property(SOURCE file.hlsl PROPERTY VS_SETTINGS "Key=Value" "Key2=Value2")
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
will set \fBKey\fP to \fBValue\fP and \fBKey2\fP to \fBValue2\fP on the
|
||
\fBfile.hlsl\fP item as metadata.
|
||
.sp
|
||
\fBGenerator expressions\fP are supported.
|
||
.SS VS_SHADER_DISABLE_OPTIMIZATIONS
|
||
.sp
|
||
Disable compiler optimizations for an \fB\&.hlsl\fP source file. This adds the
|
||
\fB\-Od\fP flag to the command line for the FxCompiler tool. Specify the value
|
||
\fBtrue\fP for this property to disable compiler optimizations.
|
||
.SS VS_SHADER_ENABLE_DEBUG
|
||
.sp
|
||
Enable debugging information for an \fB\&.hlsl\fP source file. This adds the
|
||
\fB\-Zi\fP flag to the command line for the FxCompiler tool. Specify the value
|
||
\fBtrue\fP to generate debugging information for the compiled shader.
|
||
.SS VS_SHADER_ENTRYPOINT
|
||
.sp
|
||
Specifies the name of the entry point for the shader of a \fB\&.hlsl\fP source
|
||
file.
|
||
.SS VS_SHADER_FLAGS
|
||
.sp
|
||
Set additional Visual Studio shader flags of a \fB\&.hlsl\fP source file.
|
||
.SS VS_SHADER_MODEL
|
||
.sp
|
||
Specifies the shader model of a \fB\&.hlsl\fP source file. Some shader types can
|
||
only be used with recent shader models
|
||
.SS VS_SHADER_OBJECT_FILE_NAME
|
||
.sp
|
||
Specifies a file name for the compiled shader object file for an \fB\&.hlsl\fP
|
||
source file. This adds the \fB\-Fo\fP flag to the command line for the FxCompiler
|
||
tool.
|
||
.SS VS_SHADER_OUTPUT_HEADER_FILE
|
||
.sp
|
||
Set filename for output header file containing object code of a \fB\&.hlsl\fP
|
||
source file.
|
||
.SS VS_SHADER_TYPE
|
||
.sp
|
||
Set the Visual Studio shader type of a \fB\&.hlsl\fP source file.
|
||
.SS VS_SHADER_VARIABLE_NAME
|
||
.sp
|
||
Set name of variable in header file containing object code of a \fB\&.hlsl\fP
|
||
source file.
|
||
.SS VS_TOOL_OVERRIDE
|
||
.sp
|
||
Override the default Visual Studio tool that will be applied to the source file
|
||
with a new tool not based on the extension of the file.
|
||
.SS VS_XAML_TYPE
|
||
.sp
|
||
Mark a Extensible Application Markup Language (XAML) source file
|
||
as a different type than the default \fBPage\fP\&.
|
||
The most common usage would be to set the default \fBApp.xaml\fP file as
|
||
\fBApplicationDefinition\fP\&.
|
||
.SS WRAP_EXCLUDE
|
||
.sp
|
||
Exclude this source file from any code wrapping techniques.
|
||
.sp
|
||
Some packages can wrap source files into alternate languages to
|
||
provide additional functionality.
|
||
.sp
|
||
For example, C++ code can be wrapped into Java or Python, using SWIG.
|
||
If \fBWRAP_EXCLUDE\fP is set to \fBTrue\fP, that indicates that this
|
||
source file should not be wrapped.
|
||
.SS XCODE_EXPLICIT_FILE_TYPE
|
||
.sp
|
||
Set the \fBXcode\fP \fBexplicitFileType\fP attribute on its reference to a
|
||
source file. CMake computes a default based on file extension but
|
||
can be told explicitly with this property.
|
||
.sp
|
||
See also \fBXCODE_LAST_KNOWN_FILE_TYPE\fP\&.
|
||
.SS XCODE_FILE_ATTRIBUTES
|
||
.sp
|
||
Add values to the \fBXcode\fP \fBATTRIBUTES\fP setting on its reference to a
|
||
source file. Among other things, this can be used to set the role on
|
||
a \fB\&.mig\fP file:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
set_source_files_properties(defs.mig
|
||
PROPERTIES
|
||
XCODE_FILE_ATTRIBUTES "Client;Server"
|
||
)
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.SS XCODE_LAST_KNOWN_FILE_TYPE
|
||
.sp
|
||
Set the \fBXcode\fP \fBlastKnownFileType\fP attribute on its reference to
|
||
a source file. CMake computes a default based on file extension but
|
||
can be told explicitly with this property.
|
||
.sp
|
||
See also \fBXCODE_EXPLICIT_FILE_TYPE\fP, which is preferred
|
||
over this property if set.
|
||
.SH PROPERTIES ON CACHE ENTRIES
|
||
.SS ADVANCED
|
||
.sp
|
||
True if entry should be hidden by default in GUIs.
|
||
.sp
|
||
This is a boolean value indicating whether the entry is considered
|
||
interesting only for advanced configuration. The \fBmark_as_advanced()\fP
|
||
command modifies this property.
|
||
.SS HELPSTRING
|
||
.sp
|
||
Help associated with entry in GUIs.
|
||
.sp
|
||
This string summarizes the purpose of an entry to help users set it
|
||
through a CMake GUI.
|
||
.SS MODIFIED
|
||
.sp
|
||
Internal management property. Do not set or get.
|
||
.sp
|
||
This is an internal cache entry property managed by CMake to track
|
||
interactive user modification of entries. Ignore it.
|
||
.SS STRINGS
|
||
.sp
|
||
Enumerate possible \fBSTRING\fP entry values for GUI selection.
|
||
.sp
|
||
For cache entries with type \fBSTRING\fP, this enumerates a set of values.
|
||
CMake GUIs may use this to provide a selection widget instead of a
|
||
generic string entry field. This is for convenience only. CMake does
|
||
not enforce that the value matches one of those listed.
|
||
.SS TYPE
|
||
.sp
|
||
Widget type for entry in GUIs.
|
||
.sp
|
||
Cache entry values are always strings, but CMake GUIs present widgets
|
||
to help users set values. The GUIs use this property as a hint to
|
||
determine the widget type. Valid \fBTYPE\fP values are:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
BOOL = Boolean ON/OFF value.
|
||
PATH = Path to a directory.
|
||
FILEPATH = Path to a file.
|
||
STRING = Generic string value.
|
||
INTERNAL = Do not present in GUI at all.
|
||
STATIC = Value managed by CMake, do not change.
|
||
UNINITIALIZED = Type not yet specified.
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
Generally the \fBTYPE\fP of a cache entry should be set by the command which
|
||
creates it ( \fBset()\fP, \fBoption()\fP, \fBfind_library()\fP, etc.).
|
||
.SS VALUE
|
||
.sp
|
||
Value of a cache entry.
|
||
.sp
|
||
This property maps to the actual value of a cache entry. Setting this
|
||
property always sets the value without checking, so use with care.
|
||
.SH PROPERTIES ON INSTALLED FILES
|
||
.SS CPACK_DESKTOP_SHORTCUTS
|
||
.sp
|
||
Species a list of shortcut names that should be created on the \fIDesktop\fP
|
||
for this file.
|
||
.sp
|
||
The property is currently only supported by the \fBCPack WIX Generator\fP\&.
|
||
.SS CPACK_NEVER_OVERWRITE
|
||
.sp
|
||
Request that this file not be overwritten on install or reinstall.
|
||
.sp
|
||
The property is currently only supported by the \fBCPack WIX Generator\fP\&.
|
||
.SS CPACK_PERMANENT
|
||
.sp
|
||
Request that this file not be removed on uninstall.
|
||
.sp
|
||
The property is currently only supported by the \fBCPack WIX Generator\fP\&.
|
||
.SS CPACK_START_MENU_SHORTCUTS
|
||
.sp
|
||
Species a list of shortcut names that should be created in the \fIStart Menu\fP
|
||
for this file.
|
||
.sp
|
||
The property is currently only supported by the \fBCPack WIX Generator\fP\&.
|
||
.SS CPACK_STARTUP_SHORTCUTS
|
||
.sp
|
||
Species a list of shortcut names that should be created in the \fIStartup\fP folder
|
||
for this file.
|
||
.sp
|
||
The property is currently only supported by the \fBCPack WIX Generator\fP\&.
|
||
.SS CPACK_WIX_ACL
|
||
.sp
|
||
Specifies access permissions for files or directories
|
||
installed by a WiX installer.
|
||
.sp
|
||
The property can contain multiple list entries,
|
||
each of which has to match the following format.
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
<user>[@<domain>]=<permission>[,<permission>]
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
\fB<user>\fP and \fB<domain>\fP specify the windows user and domain for which the
|
||
\fB<Permission>\fP element should be generated.
|
||
.sp
|
||
\fB<permission>\fP is any of the YesNoType attributes listed here:
|
||
.INDENT 0.0
|
||
.INDENT 3.5
|
||
.sp
|
||
.nf
|
||
.ft C
|
||
http://wixtoolset.org/documentation/manual/v3/xsd/wix/permission.html
|
||
.ft P
|
||
.fi
|
||
.UNINDENT
|
||
.UNINDENT
|
||
.sp
|
||
The property is currently only supported by the \fBCPack WIX Generator\fP\&.
|
||
.SH DEPRECATED PROPERTIES ON DIRECTORIES
|
||
.SS ADDITIONAL_MAKE_CLEAN_FILES
|
||
.sp
|
||
Deprecated since version 3.15: Use \fBADDITIONAL_CLEAN_FILES\fP instead.
|
||
|
||
.sp
|
||
Additional files to remove during the clean stage.
|
||
.sp
|
||
A ;\-list of files that will be removed as a
|
||
part of the \fBmake clean\fP target.
|
||
.sp
|
||
Arguments to \fI\%ADDITIONAL_MAKE_CLEAN_FILES\fP may use
|
||
\fBgenerator expressions\fP\&.
|
||
.sp
|
||
This property only works for the Makefile generators.
|
||
It is ignored on other generators.
|
||
.SS COMPILE_DEFINITIONS_<CONFIG>
|
||
.sp
|
||
Ignored. See CMake Policy \fBCMP0043\fP\&.
|
||
.sp
|
||
Per\-configuration preprocessor definitions in a directory.
|
||
.sp
|
||
This is the configuration\-specific version of \fBCOMPILE_DEFINITIONS\fP
|
||
where \fB<CONFIG>\fP is an upper\-case name (ex. \fBCOMPILE_DEFINITIONS_DEBUG\fP).
|
||
.sp
|
||
This property will be initialized in each directory by its value in
|
||
the directory’s parent.
|
||
.sp
|
||
Contents of \fBCOMPILE_DEFINITIONS_<CONFIG>\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.sp
|
||
Generator expressions should be preferred instead of setting this property.
|
||
.SS TEST_INCLUDE_FILE
|
||
.sp
|
||
Deprecated. Use \fBTEST_INCLUDE_FILES\fP instead.
|
||
.sp
|
||
A cmake file that will be included when ctest is run.
|
||
.sp
|
||
If you specify \fBTEST_INCLUDE_FILE\fP, that file will be included and
|
||
processed when ctest is run on the directory.
|
||
.SH DEPRECATED PROPERTIES ON TARGETS
|
||
.SS COMPILE_DEFINITIONS_<CONFIG>
|
||
.sp
|
||
Ignored. See CMake Policy \fBCMP0043\fP\&.
|
||
.sp
|
||
Per\-configuration preprocessor definitions on a target.
|
||
.sp
|
||
This is the configuration\-specific version of \fBCOMPILE_DEFINITIONS\fP
|
||
where \fB<CONFIG>\fP is an upper\-case name (ex. \fBCOMPILE_DEFINITIONS_DEBUG\fP).
|
||
.sp
|
||
Contents of \fBCOMPILE_DEFINITIONS_<CONFIG>\fP may use “generator expressions”
|
||
with the syntax \fB$<...>\fP\&. See the \fBcmake\-generator\-expressions(7)\fP
|
||
manual for available expressions. See the \fBcmake\-buildsystem(7)\fP
|
||
manual for more on defining buildsystem properties.
|
||
.sp
|
||
Generator expressions should be preferred instead of setting this property.
|
||
.SS POST_INSTALL_SCRIPT
|
||
.sp
|
||
Deprecated install support.
|
||
.sp
|
||
The \fBPRE_INSTALL_SCRIPT\fP and \fBPOST_INSTALL_SCRIPT\fP properties are
|
||
the old way to specify CMake scripts to run before and after installing a
|
||
target. They are used only when the old \fBINSTALL_TARGETS\fP command is
|
||
used to install the target. Use the \fBinstall()\fP command instead.
|
||
.SS PRE_INSTALL_SCRIPT
|
||
.sp
|
||
Deprecated install support.
|
||
.sp
|
||
The \fBPRE_INSTALL_SCRIPT\fP and \fBPOST_INSTALL_SCRIPT\fP properties are
|
||
the old way to specify CMake scripts to run before and after installing a
|
||
target. They are used only when the old \fBINSTALL_TARGETS\fP command is
|
||
used to install the target. Use the \fBinstall()\fP command instead.
|
||
.SH DEPRECATED PROPERTIES ON SOURCE FILES
|
||
.SS COMPILE_DEFINITIONS_<CONFIG>
|
||
.sp
|
||
Ignored. See CMake Policy \fBCMP0043\fP\&.
|
||
.sp
|
||
Per\-configuration preprocessor definitions on a source file.
|
||
.sp
|
||
This is the configuration\-specific version of \fBCOMPILE_DEFINITIONS\fP\&.
|
||
Note that \fBXcode\fP does not support per\-configuration source
|
||
file flags so this property will be ignored by the \fBXcode\fP generator.
|
||
.SH COPYRIGHT
|
||
2000-2020 Kitware, Inc. and Contributors
|
||
.\" Generated by docutils manpage writer.
|
||
.
|