Help: Mark up the buildsystem commands documentation
Cross-link to the cmake-buildsystem manual.
This commit is contained in:
parent
a683262a72
commit
ba4c2fa8fd
|
@ -9,9 +9,14 @@ Adds options to the compilation of source files.
|
||||||
|
|
||||||
Adds options to the compiler command line for sources in the current
|
Adds options to the compiler command line for sources in the current
|
||||||
directory and below. This command can be used to add any options, but
|
directory and below. This command can be used to add any options, but
|
||||||
alternative commands exist to add preprocessor definitions or include
|
alternative commands exist to add preprocessor definitions
|
||||||
directories. See documentation of the directory and target
|
(:command:`target_compile_definitions` and :command:`add_definitions`) or
|
||||||
COMPILE_OPTIONS properties for details. Arguments to
|
include directories (:command:`target_include_directories` and
|
||||||
add_compile_options may use "generator expressions" with the syntax
|
:command:`include_directories`). See documentation of the
|
||||||
``$<...>``. See the :manual:`cmake-generator-expressions(7)` manual for
|
:prop_tgt:`directory <COMPILE_OPTIONS>` and
|
||||||
available expressions.
|
:prop_tgt:` target <COMPILE_OPTIONS>` ``COMPILE_OPTIONS`` properties.
|
||||||
|
|
||||||
|
Arguments to ``add_compile_options`` may use "generator expressions" with
|
||||||
|
the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
|
||||||
|
manual for available expressions. See the :manual:`cmake-buildsystem(7)`
|
||||||
|
manual for more on defining buildsystem properties.
|
||||||
|
|
|
@ -7,13 +7,21 @@ Adds -D define flags to the compilation of source files.
|
||||||
|
|
||||||
add_definitions(-DFOO -DBAR ...)
|
add_definitions(-DFOO -DBAR ...)
|
||||||
|
|
||||||
Adds flags to the compiler command line for sources in the current
|
Adds definitions to the compiler command line for sources in the current
|
||||||
directory and below. This command can be used to add any flags, but
|
directory and below. This command can be used to add any flags, but
|
||||||
it was originally intended to add preprocessor definitions. Flags
|
it is intended to add preprocessor definitions. Flags
|
||||||
beginning in -D or /D that look like preprocessor definitions are
|
beginning in -D or /D that look like preprocessor definitions are
|
||||||
automatically added to the COMPILE_DEFINITIONS property for the
|
automatically added to the :prop_dir:`COMPILE_DEFINITIONS` directory
|
||||||
current directory. Definitions with non-trivial values may be left in
|
property for the current directory. Definitions with non-trivial values
|
||||||
the set of flags instead of being converted for reasons of backwards
|
may be left in the set of flags instead of being converted for reasons of
|
||||||
compatibility. See documentation of the directory, target, and source
|
backwards compatibility. See documentation of the
|
||||||
file COMPILE_DEFINITIONS properties for details on adding preprocessor
|
:prop_dir:`directory <COMPILE_DEFINITIONS>`,
|
||||||
definitions to specific scopes and configurations.
|
:prop_tgt:`target <COMPILE_DEFINITIONS>`,
|
||||||
|
:prop_sf:`source file <COMPILE_DEFINITIONS>` ``COMPILE_DEFINITIONS``
|
||||||
|
properties for details on adding preprocessor definitions to specific
|
||||||
|
scopes and configurations.
|
||||||
|
|
||||||
|
Arguments to ``add_definitions`` may use "generator expressions" with
|
||||||
|
the syntax "$<...>". See the :manual:`cmake-generator-expressions(7)`
|
||||||
|
manual for available expressions. See the :manual:`cmake-buildsystem(7)`
|
||||||
|
manual for more on defining buildsystem properties.
|
||||||
|
|
|
@ -7,67 +7,71 @@ Add an executable to the project using the specified source files.
|
||||||
|
|
||||||
add_executable(<name> [WIN32] [MACOSX_BUNDLE]
|
add_executable(<name> [WIN32] [MACOSX_BUNDLE]
|
||||||
[EXCLUDE_FROM_ALL]
|
[EXCLUDE_FROM_ALL]
|
||||||
source1 source2 ... sourceN)
|
source1 [source2 ...])
|
||||||
|
|
||||||
Adds an executable target called <name> to be built from the source
|
Adds an executable target called ``<name>`` to be built from the source
|
||||||
files listed in the command invocation. The <name> corresponds to the
|
files listed in the command invocation. The ``<name>`` corresponds to the
|
||||||
logical target name and must be globally unique within a project. The
|
logical target name and must be globally unique within a project. The
|
||||||
actual file name of the executable built is constructed based on
|
actual file name of the executable built is constructed based on
|
||||||
conventions of the native platform (such as <name>.exe or just
|
conventions of the native platform (such as ``<name>.exe`` or just
|
||||||
<name>).
|
``<name>``.
|
||||||
|
|
||||||
By default the executable file will be created in the build tree
|
By default the executable file will be created in the build tree
|
||||||
directory corresponding to the source tree directory in which the
|
directory corresponding to the source tree directory in which the
|
||||||
command was invoked. See documentation of the
|
command was invoked. See documentation of the
|
||||||
RUNTIME_OUTPUT_DIRECTORY target property to change this location. See
|
:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` target property to change this
|
||||||
documentation of the OUTPUT_NAME target property to change the <name>
|
location. See documentation of the :prop_tgt:`OUTPUT_NAME` target property
|
||||||
part of the final file name.
|
to change the ``<name>`` part of the final file name.
|
||||||
|
|
||||||
If WIN32 is given the property WIN32_EXECUTABLE will be set on the
|
If ``WIN32`` is given the property :prop_tgt:`WIN32_EXECUTABLE` will be
|
||||||
target created. See documentation of that target property for
|
set on the target created. See documentation of that target property for
|
||||||
details.
|
details.
|
||||||
|
|
||||||
If MACOSX_BUNDLE is given the corresponding property will be set on
|
If ``MACOSX_BUNDLE`` is given the corresponding property will be set on
|
||||||
the created target. See documentation of the MACOSX_BUNDLE target
|
the created target. See documentation of the :prop_tgt:`MACOSX_BUNDLE`
|
||||||
property for details.
|
target property for details.
|
||||||
|
|
||||||
If EXCLUDE_FROM_ALL is given the corresponding property will be set on
|
If ``EXCLUDE_FROM_ALL`` is given the corresponding property will be set on
|
||||||
the created target. See documentation of the EXCLUDE_FROM_ALL target
|
the created target. See documentation of the :prop_tgt:`EXCLUDE_FROM_ALL`
|
||||||
property for details.
|
target property for details.
|
||||||
|
|
||||||
The add_executable command can also create IMPORTED executable targets
|
See the :manual:`cmake-buildsystem(7)` manual for more on defining
|
||||||
using this signature:
|
buildsystem properties.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
add_executable(<name> IMPORTED [GLOBAL])
|
add_executable(<name> IMPORTED [GLOBAL])
|
||||||
|
|
||||||
An IMPORTED executable target references an executable file located
|
An :ref:`IMPORTED executable target <Imported Targets>` references an
|
||||||
outside the project. No rules are generated to build it. The target
|
executable file located outside the project. No rules are generated to
|
||||||
name has scope in the directory in which it is created and below, but
|
build it, and the :prop_tgt:`IMPORTED` target property is ``True``. The
|
||||||
the GLOBAL option extends visibility. It may be referenced like any
|
target name has scope in the directory in which it is created and below, but
|
||||||
target built within the project. IMPORTED executables are useful for
|
the ``GLOBAL`` option extends visibility. It may be referenced like any
|
||||||
convenient reference from commands like add_custom_command. Details
|
target built within the project. ``IMPORTED`` executables are useful
|
||||||
about the imported executable are specified by setting properties
|
for convenient reference from commands like :command:`add_custom_command`.
|
||||||
|
Details about the imported executable are specified by setting properties
|
||||||
whose names begin in ``IMPORTED_``. The most important such property is
|
whose names begin in ``IMPORTED_``. The most important such property is
|
||||||
IMPORTED_LOCATION (and its per-configuration version
|
:prop_tgt:`IMPORTED_LOCATION` (and its per-configuration version
|
||||||
IMPORTED_LOCATION_<CONFIG>) which specifies the location of the main
|
:prop_tgt:`IMPORTED_LOCATION_<CONFIG>`) which specifies the location of
|
||||||
executable file on disk. See documentation of the IMPORTED_*
|
the main executable file on disk. See documentation of the ``IMPORTED_*``
|
||||||
properties for more information.
|
properties for more information.
|
||||||
|
|
||||||
The signature
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
add_executable(<name> ALIAS <target>)
|
add_executable(<name> ALIAS <target>)
|
||||||
|
|
||||||
creates an alias, such that <name> can be used to refer to <target> in
|
Creates an :ref:`Alias Target <Alias Targets>`, such that ``<name>`` can
|
||||||
subsequent commands. The <name> does not appear in the generated
|
be used to refer to ``<target>`` in subsequent commands. The ``<name>``
|
||||||
buildsystem as a make target. The <target> may not be an IMPORTED
|
does not appear in the generated buildsystem as a make target. The
|
||||||
target or an ALIAS. Alias targets can be used as linkable targets,
|
``<target>`` may not be an :ref:`Imported Target <Imported Targets>` or an
|
||||||
targets to read properties from, executables for custom commands and
|
``ALIAS``. ``ALIAS`` targets can be used as targets to read properties
|
||||||
custom targets. They can also be tested for existance with the
|
from, executables for custom commands and custom targets. They can also be
|
||||||
regular if(TARGET) subcommand. The <name> may not be used to modify
|
tested for existance with the regular :command:`if(TARGET)` subcommand.
|
||||||
properties of <target>, that is, it may not be used as the operand of
|
The ``<name>`` may not be used to modify properties of ``<target>``, that
|
||||||
set_property, set_target_properties, target_link_libraries etc. An
|
is, it may not be used as the operand of :command:`set_property`,
|
||||||
ALIAS target may not be installed of exported.
|
:command:`set_target_properties`, :command:`target_link_libraries` etc.
|
||||||
|
An ``ALIAS`` target may not be installed or exported.
|
||||||
|
|
|
@ -7,73 +7,76 @@ Add a library to the project using the specified source files.
|
||||||
|
|
||||||
add_library(<name> [STATIC | SHARED | MODULE]
|
add_library(<name> [STATIC | SHARED | MODULE]
|
||||||
[EXCLUDE_FROM_ALL]
|
[EXCLUDE_FROM_ALL]
|
||||||
source1 source2 ... sourceN)
|
source1 [source2 ...])
|
||||||
|
|
||||||
Adds a library target called <name> to be built from the source files
|
Adds a library target called ``<name>`` to be built from the source files
|
||||||
listed in the command invocation. The <name> corresponds to the
|
listed in the command invocation. The ``<name>`` corresponds to the
|
||||||
logical target name and must be globally unique within a project. The
|
logical target name and must be globally unique within a project. The
|
||||||
actual file name of the library built is constructed based on
|
actual file name of the library built is constructed based on
|
||||||
conventions of the native platform (such as lib<name>.a or
|
conventions of the native platform (such as ``lib<name>.a`` or
|
||||||
<name>.lib).
|
``<name>.lib``).
|
||||||
|
|
||||||
STATIC, SHARED, or MODULE may be given to specify the type of library
|
``STATIC``, ``SHARED``, or ``MODULE`` may be given to specify the type of
|
||||||
to be created. STATIC libraries are archives of object files for use
|
library to be created. ``STATIC`` libraries are archives of object files
|
||||||
when linking other targets. SHARED libraries are linked dynamically
|
for use when linking other targets. ``SHARED`` libraries are linked
|
||||||
and loaded at runtime. MODULE libraries are plugins that are not
|
dynamically and loaded at runtime. ``MODULE`` libraries are plugins that
|
||||||
linked into other targets but may be loaded dynamically at runtime
|
are not linked into other targets but may be loaded dynamically at runtime
|
||||||
using dlopen-like functionality. If no type is given explicitly the
|
using dlopen-like functionality. If no type is given explicitly the
|
||||||
type is STATIC or SHARED based on whether the current value of the
|
type is ``STATIC`` or ``SHARED`` based on whether the current value of the
|
||||||
variable BUILD_SHARED_LIBS is true. For SHARED and MODULE libraries
|
variable :variable:`BUILD_SHARED_LIBS` is ``ON``. For ``SHARED`` and
|
||||||
the POSITION_INDEPENDENT_CODE target property is set to TRUE
|
``MODULE`` libraries the :prop_tgt:`POSITION_INDEPENDENT_CODE` target
|
||||||
automatically.
|
property is set to ``ON`` automatically.
|
||||||
|
|
||||||
By default the library file will be created in the build tree
|
By default the library file will be created in the build tree directory
|
||||||
directory corresponding to the source tree directory in which the
|
corresponding to the source tree directory in which thecommand was
|
||||||
command was invoked. See documentation of the
|
invoked. See documentation of the :prop_tgt:`ARCHIVE_OUTPUT_DIRECTORY`,
|
||||||
ARCHIVE_OUTPUT_DIRECTORY, LIBRARY_OUTPUT_DIRECTORY, and
|
:prop_tgt:`LIBRARY_OUTPUT_DIRECTORY`, and
|
||||||
RUNTIME_OUTPUT_DIRECTORY target properties to change this location.
|
:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` target properties to change this
|
||||||
See documentation of the OUTPUT_NAME target property to change the
|
location. See documentation of the :prop_tgt:`OUTPUT_NAME` target
|
||||||
<name> part of the final file name.
|
property to change the ``<name>`` part of the final file name.
|
||||||
|
|
||||||
If EXCLUDE_FROM_ALL is given the corresponding property will be set on
|
If ``EXCLUDE_FROM_ALL`` is given the corresponding property will be set on
|
||||||
the created target. See documentation of the EXCLUDE_FROM_ALL target
|
the created target. See documentation of the :prop_tgt:`EXCLUDE_FROM_ALL`
|
||||||
property for details.
|
target property for details.
|
||||||
|
|
||||||
The add_library command can also create IMPORTED library targets using
|
See the :manual:`cmake-buildsystem(7)` manual for more on defining buildsystem
|
||||||
this signature:
|
properties.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
add_library(<name> <SHARED|STATIC|MODULE|UNKNOWN> IMPORTED
|
add_library(<name> <SHARED|STATIC|MODULE|UNKNOWN> IMPORTED
|
||||||
[GLOBAL])
|
[GLOBAL])
|
||||||
|
|
||||||
An IMPORTED library target references a library file located outside
|
An :ref:`IMPORTED library target <Imported Targets>` references a library
|
||||||
the project. No rules are generated to build it. The target name has
|
file located outside the project. No rules are generated to build it, and
|
||||||
scope in the directory in which it is created and below, but the
|
the :prop_tgt:`IMPORTED` target property is ``True``. The target name has
|
||||||
GLOBAL option extends visibility. It may be referenced like any
|
scope in the directory in which it is created and below, but the ``GLOBAL``
|
||||||
target built within the project. IMPORTED libraries are useful for
|
option extends visibility. It may be referenced like any target built
|
||||||
convenient reference from commands like target_link_libraries.
|
within the project. ``IMPORTED`` libraries are useful for convenient
|
||||||
Details about the imported library are specified by setting properties
|
reference from commands like :command:`target_link_libraries`. Details
|
||||||
whose names begin in ``IMPORTED_``. The most important such property is
|
about the imported library are specified by setting properties whose names
|
||||||
IMPORTED_LOCATION (and its per-configuration version
|
begin in ``IMPORTED_`` and ``INTERFACE_``. The most important such
|
||||||
IMPORTED_LOCATION_<CONFIG>) which specifies the location of the main
|
property is :prop_tgt:`IMPORTED_LOCATION` (and its per-configuration
|
||||||
library file on disk. See documentation of the IMPORTED_* properties
|
variant :prop_tgt:`IMPORTED_LOCATION_<CONFIG>`) which specifies the
|
||||||
for more information.
|
location of the main library file on disk. See documentation of the
|
||||||
|
``IMPORTED_*`` and ``INTERFACE_*`` properties for more information.
|
||||||
|
|
||||||
The signature
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
add_library(<name> OBJECT <src>...)
|
add_library(<name> OBJECT <src>...)
|
||||||
|
|
||||||
creates a special "object library" target. An object library compiles
|
Creates a special "object library" target. An object library compiles
|
||||||
source files but does not archive or link their object files into a
|
source files but does not archive or link their object files into a
|
||||||
library. Instead other targets created by add_library or
|
library. Instead other targets created by :command:`add_library` or
|
||||||
add_executable may reference the objects using an expression of the
|
:command:`add_executable` may reference the objects using an expression of the
|
||||||
form $<TARGET_OBJECTS:objlib> as a source, where "objlib" is the
|
form ``$<TARGET_OBJECTS:objlib>`` as a source, where ``objlib`` is the
|
||||||
object library name. For example:
|
object library name. For example:
|
||||||
|
|
||||||
::
|
.. code-block:: cmake
|
||||||
|
|
||||||
add_library(... $<TARGET_OBJECTS:objlib> ...)
|
add_library(... $<TARGET_OBJECTS:objlib> ...)
|
||||||
add_executable(... $<TARGET_OBJECTS:objlib> ...)
|
add_executable(... $<TARGET_OBJECTS:objlib> ...)
|
||||||
|
@ -82,48 +85,52 @@ will include objlib's object files in a library and an executable
|
||||||
along with those compiled from their own sources. Object libraries
|
along with those compiled from their own sources. Object libraries
|
||||||
may contain only sources (and headers) that compile to object files.
|
may contain only sources (and headers) that compile to object files.
|
||||||
They may contain custom commands generating such sources, but not
|
They may contain custom commands generating such sources, but not
|
||||||
PRE_BUILD, PRE_LINK, or POST_BUILD commands. Object libraries cannot
|
``PRE_BUILD``, ``PRE_LINK``, or ``POST_BUILD`` commands. Object libraries
|
||||||
be imported, exported, installed, or linked. Some native build
|
cannot be imported, exported, installed, or linked. Some native build
|
||||||
systems may not like targets that have only object files, so consider
|
systems may not like targets that have only object files, so consider
|
||||||
adding at least one real source file to any target that references
|
adding at least one real source file to any target that references
|
||||||
$<TARGET_OBJECTS:objlib>.
|
``$<TARGET_OBJECTS:objlib>``.
|
||||||
|
|
||||||
The signature
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
add_library(<name> ALIAS <target>)
|
add_library(<name> ALIAS <target>)
|
||||||
|
|
||||||
creates an alias, such that <name> can be used to refer to <target> in
|
Creates an :ref:`Alias Target <Alias Targets>`, such that ``<name>`` can be
|
||||||
subsequent commands. The <name> does not appear in the generated
|
used to refer to ``<target>`` in subsequent commands. The ``<name>`` does
|
||||||
buildsystem as a make target. The <target> may not be an IMPORTED
|
not appear in the generatedbuildsystem as a make target. The ``<target>``
|
||||||
target or an ALIAS. Alias targets can be used as linkable targets,
|
may not be an :ref:`Imported Target <Imported Targets>` or an ``ALIAS``.
|
||||||
targets to read properties from. They can also be tested for
|
``ALIAS`` targets can be used as linkable targets and as targets to
|
||||||
existance with the regular if(TARGET) subcommand. The <name> may not
|
read properties from. They can also be tested for existance with the
|
||||||
be used to modify properties of <target>, that is, it may not be used
|
regular :command:`if(TARGET)` subcommand. The ``<name>`` may not be used
|
||||||
as the operand of set_property, set_target_properties,
|
to modify properties of ``<target>``, that is, it may not be used as the
|
||||||
target_link_libraries etc. An ALIAS target may not be installed of
|
operand of :command:`set_property`, :command:`set_target_properties`,
|
||||||
exported.
|
:command:`target_link_libraries` etc. An ``ALIAS`` target may not be
|
||||||
|
installed or exported.
|
||||||
|
|
||||||
The signature
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
add_library(<name> INTERFACE [IMPORTED [GLOBAL]])
|
add_library(<name> INTERFACE [IMPORTED [GLOBAL]])
|
||||||
|
|
||||||
creates an interface target. An interface target does not directly
|
Creates an :ref:`Interface Library <Interface Libraries>`. An ``INTERFACE``
|
||||||
create build output, though it may have properties set on it and it
|
library target does not directly create build output, though it may
|
||||||
may be installed, exported and imported. Typically the INTERFACE_*
|
have properties set on it and it may be installed, exported and
|
||||||
properties are populated on the interface target using the
|
imported. Typically the ``INTERFACE_*`` properties are populated on
|
||||||
:command:`set_property`, :command:`target_link_libraries`,
|
the interface target using the :command:`set_property`,
|
||||||
:command:`target_include_directories`
|
:command:`target_link_libraries(INTERFACE)`,
|
||||||
and :command:`target_compile_defintions` commands, and then it is used as an
|
:command:`target_include_directories(INTERFACE)`,
|
||||||
argument to :command:`target_link_libraries` like any other target.
|
:command:`target_compile_options(INTERFACE)`
|
||||||
|
and :command:`target_compile_definitions(INTERFACE)` commands, and then it
|
||||||
|
is used as an argument to :command:`target_link_libraries` like any other
|
||||||
|
target.
|
||||||
|
|
||||||
An ``INTERFACE`` :prop_tgt:`IMPORTED` target may also be created with this
|
An ``INTERFACE`` :ref:`Imported Target <Imported Targets>` may also be
|
||||||
signature. An :prop_tgt:`IMPORTED` library target references a library defined
|
created with this signature. An ``IMPORTED`` library target references a
|
||||||
outside the project. The target name has scope in the directory in which it is
|
library defined outside the project. The target name has scope in the
|
||||||
created and below, but the ``GLOBAL`` option extends visibility. It may be
|
directory in which it is created and below, but the ``GLOBAL`` option
|
||||||
referenced like any target built within the project. :prop_tgt:`IMPORTED`
|
extends visibility. It may be referenced like any target built within
|
||||||
libraries are useful for convenient reference from commands like
|
the project. ``IMPORTED`` libraries are useful for convenient reference
|
||||||
:command:`target_link_libraries`.
|
from commands like :command:`target_link_libraries`.
|
||||||
|
|
|
@ -5,26 +5,31 @@ Add include directories to the build.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
include_directories([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...)
|
include_directories([AFTER|BEFORE] [SYSTEM] dir1 [dir2 ...])
|
||||||
|
|
||||||
Add the given directories to those the compiler uses to search for
|
Add the given directories to those the compiler uses to search for
|
||||||
include files. Relative paths are interpreted as relative to the
|
include files. Relative paths are interpreted as relative to the
|
||||||
current source directory.
|
current source directory.
|
||||||
|
|
||||||
The include directories are added to the directory property
|
The include directories are added to the :prop_dir:`INCLUDE_DIRECTORIES`
|
||||||
INCLUDE_DIRECTORIES for the current CMakeLists file. They are also
|
directory property for the current ``CMakeLists`` file. They are also
|
||||||
added to the target property INCLUDE_DIRECTORIES for each target in
|
added to the :prop_tgt:`INCLUDE_DIRECTORIES` target property for each
|
||||||
the current CMakeLists file. The target property values are the ones
|
target in the current ``CMakeLists`` file. The target property values
|
||||||
used by the generators.
|
are the ones used by the generators.
|
||||||
|
|
||||||
By default the directories are appended onto the current list of
|
By default the directories specified are appended onto the current list of
|
||||||
directories. This default behavior can be changed by setting
|
directories. This default behavior can be changed by setting
|
||||||
:variable:`CMAKE_INCLUDE_DIRECTORIES_BEFORE` to ON. By using AFTER or BEFORE
|
:variable:`CMAKE_INCLUDE_DIRECTORIES_BEFORE` to ``ON``. By using
|
||||||
explicitly, you can select between appending and prepending,
|
``AFTER`` or ``BEFORE`` explicitly, you can select between appending and
|
||||||
independent of the default.
|
prepending, independent of the default.
|
||||||
|
|
||||||
If the SYSTEM option is given, the compiler will be told the
|
If the ``SYSTEM`` option is given, the compiler will be told the
|
||||||
directories are meant as system include directories on some platforms
|
directories are meant as system include directories on some platforms.
|
||||||
(signalling this setting might achieve effects such as the compiler
|
Signalling this setting might achieve effects such as the compiler
|
||||||
skipping warnings, or these fixed-install system files not being
|
skipping warnings, or these fixed-install system files not being
|
||||||
considered in dependency calculations - see compiler docs).
|
considered in dependency calculations - see compiler docs.
|
||||||
|
|
||||||
|
Arguments to ``include_directories`` may use "generator expressions" with
|
||||||
|
the syntax "$<...>". See the :manual:`cmake-generator-expressions(7)`
|
||||||
|
manual for available expressions. See the :manual:`cmake-buildsystem(7)`
|
||||||
|
manual for more on defining buildsystem properties.
|
||||||
|
|
|
@ -5,20 +5,24 @@ Add compile definitions to a target.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
target_compile_definitions(<target> <INTERFACE|PUBLIC|PRIVATE> [items1...]
|
target_compile_definitions(<target>
|
||||||
|
<INTERFACE|PUBLIC|PRIVATE> [items1...]
|
||||||
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
|
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
|
||||||
|
|
||||||
Specify compile definitions to use when compiling a given target. The
|
Specify compile definitions to use when compiling a given <target. The
|
||||||
named <target> must have been created by a command such as
|
named ``<target>`` must have been created by a command such as
|
||||||
add_executable or add_library and must not be an IMPORTED target. The
|
:command:`add_executable` or :command:`add_library` and must not be an
|
||||||
INTERFACE, PUBLIC and PRIVATE keywords are required to specify the
|
:ref:`Imported Target <Imported Targets>`.
|
||||||
scope of the following arguments. PRIVATE and PUBLIC items will
|
|
||||||
populate the COMPILE_DEFINITIONS property of <target>. PUBLIC and
|
|
||||||
INTERFACE items will populate the INTERFACE_COMPILE_DEFINITIONS
|
|
||||||
property of <target>. The following arguments specify compile
|
|
||||||
definitions. Repeated calls for the same <target> append items in the
|
|
||||||
order called.
|
|
||||||
|
|
||||||
Arguments to target_compile_definitions may use "generator expressions" with
|
The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
|
||||||
the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)` manual
|
specify the scope of the following arguments. ``PRIVATE`` and ``PUBLIC``
|
||||||
for available expressions.
|
items will populate the :prop_tgt:`COMPILE_DEFINITIONS` property of
|
||||||
|
``<target>``. ``PUBLIC`` and ``INTERFACE`` items will populate the
|
||||||
|
:prop_tgt:`INTERFACE_COMPILE_DEFINITIONS` property of ``<target>``. The
|
||||||
|
following arguments specify compile definitions. Repeated calls for the
|
||||||
|
same ``<target>`` append items in the order called.
|
||||||
|
|
||||||
|
Arguments to ``target_compile_definitions`` may use "generator expressions"
|
||||||
|
with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
|
||||||
|
manual for available expressions. See the :manual:`cmake-buildsystem(7)`
|
||||||
|
manual for more on defining buildsystem properties.
|
||||||
|
|
|
@ -5,23 +5,33 @@ Add compile options to a target.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
target_compile_options(<target> [BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...]
|
target_compile_options(<target> [BEFORE]
|
||||||
|
<INTERFACE|PUBLIC|PRIVATE> [items1...]
|
||||||
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
|
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
|
||||||
|
|
||||||
Specify compile options to use when compiling a given target. The
|
Specify compile options to use when compiling a given target. The
|
||||||
named <target> must have been created by a command such as
|
named ``<target>`` must have been created by a command such as
|
||||||
add_executable or add_library and must not be an IMPORTED target. If
|
:command:`add_executable` or :command:`add_library` and must not be an
|
||||||
BEFORE is specified, the content will be prepended to the property
|
:prop_tgt:`IMPORTED Target`. If ``BEFORE`` is specified, the content will
|
||||||
instead of being appended.
|
be prepended to the property instead of being appended.
|
||||||
|
|
||||||
The INTERFACE, PUBLIC and PRIVATE keywords are required to specify the
|
This command can be used to add any options, but
|
||||||
scope of the following arguments. PRIVATE and PUBLIC items will
|
alternative commands exist to add preprocessor definitions
|
||||||
populate the COMPILE_OPTIONS property of <target>. PUBLIC and
|
(:command:`target_compile_definitions` and :command:`add_definitions`) or
|
||||||
INTERFACE items will populate the INTERFACE_COMPILE_OPTIONS property
|
include directories (:command:`target_include_directories` and
|
||||||
of <target>. The following arguments specify compile options.
|
:command:`include_directories`). See documentation of the
|
||||||
Repeated calls for the same <target> append items in the order called.
|
:prop_tgt:`directory <COMPILE_OPTIONS>` and
|
||||||
|
:prop_tgt:` target <COMPILE_OPTIONS>` ``COMPILE_OPTIONS`` properties.
|
||||||
|
|
||||||
Arguments to target_compile_options may use "generator expressions"
|
The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to
|
||||||
with the syntax ``$<...>``.
|
specify the scope of the following arguments. ``PRIVATE`` and ``PUBLIC``
|
||||||
See the :manual:`cmake-generator-expressions(7)` manual for available
|
items will populate the :prop_tgt:`COMPILE_OPTIONS` property of
|
||||||
expressions.
|
``<target>``. ``PUBLIC`` and ``INTERFACE`` items will populate the
|
||||||
|
:prop_tgt:`INTERFACE_COMPILE_OPTIONS` property of ``<target>``. The
|
||||||
|
following arguments specify compile options. Repeated calls for the same
|
||||||
|
``<target>`` append items in the order called.
|
||||||
|
|
||||||
|
Arguments to ``target_compile_options`` may use "generator expressions"
|
||||||
|
with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
|
||||||
|
manual for available expressions. See the :manual:`cmake-buildsystem(7)`
|
||||||
|
manual for more on defining buildsystem properties.
|
||||||
|
|
|
@ -5,33 +5,38 @@ Add include directories to a target.
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
target_include_directories(<target> [SYSTEM] [BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...]
|
target_include_directories(<target> [SYSTEM] [BEFORE]
|
||||||
|
<INTERFACE|PUBLIC|PRIVATE> [items1...]
|
||||||
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
|
[<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
|
||||||
|
|
||||||
Specify include directories or targets to use when compiling a given
|
Specify include directories or targets to use when compiling a given
|
||||||
target. The named <target> must have been created by a command such
|
target. The named ``<target>`` must have been created by a command such
|
||||||
as add_executable or add_library and must not be an IMPORTED target.
|
as :command:`add_executable` or :command:`add_library` and must not be an
|
||||||
|
:prop_tgt:`IMPORTED` target.
|
||||||
|
|
||||||
If BEFORE is specified, the content will be prepended to the property
|
If ``BEFORE`` is specified, the content will be prepended to the property
|
||||||
instead of being appended.
|
instead of being appended.
|
||||||
|
|
||||||
The INTERFACE, PUBLIC and PRIVATE keywords are required to specify the
|
The ``INTERFACE``, ``PUBLIC`` and ``PRIVATE`` keywords are required to specify
|
||||||
scope of the following arguments. PRIVATE and PUBLIC items will
|
the scope of the following arguments. ``PRIVATE`` and ``PUBLIC`` items will
|
||||||
populate the INCLUDE_DIRECTORIES property of <target>. PUBLIC and
|
populate the :prop_tgt:`INCLUDE_DIRECTORIES` property of ``<target>``.
|
||||||
INTERFACE items will populate the INTERFACE_INCLUDE_DIRECTORIES
|
``PUBLIC`` and ``INTERFACE`` items will populate the
|
||||||
property of <target>. The following arguments specify include
|
:prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`
|
||||||
directories. Specified include directories may be absolute paths or
|
property of ``<target>``. The following arguments specify include
|
||||||
relative paths. Repeated calls for the same <target> append items in
|
directories.
|
||||||
the order called.If SYSTEM is specified, the compiler will be told the
|
|
||||||
|
Specified include directories may be absolute paths or relative paths.
|
||||||
|
Repeated calls for the same <target> append items in the order called. If
|
||||||
|
``SYSTEM`` is specified, the compiler will be told the
|
||||||
directories are meant as system include directories on some platforms
|
directories are meant as system include directories on some platforms
|
||||||
(signalling this setting might achieve effects such as the compiler
|
(signalling this setting might achieve effects such as the compiler
|
||||||
skipping warnings, or these fixed-install system files not being
|
skipping warnings, or these fixed-install system files not being
|
||||||
considered in dependency calculations - see compiler docs). If SYSTEM
|
considered in dependency calculations - see compiler docs). If ``SYSTEM``
|
||||||
is used together with PUBLIC or INTERFACE, the
|
is used together with ``PUBLIC`` or ``INTERFACE``, the
|
||||||
INTERFACE_SYSTEM_INCLUDE_DIRECTORIES target property will be populated
|
:prop_tgt:`INTERFACE_SYSTEM_INCLUDE_DIRECTORIES` target property will be
|
||||||
with the specified directories.
|
populated with the specified directories.
|
||||||
|
|
||||||
Arguments to target_include_directories may use "generator
|
Arguments to ``target_include_directories`` may use "generator expressions"
|
||||||
expressions" with the syntax ``$<...>``.
|
with the syntax ``$<...>``. See the :manual:`cmake-generator-expressions(7)`
|
||||||
See the :manual:`cmake-generator-expressions(7)` manual for available
|
manual for available expressions. See the :manual:`cmake-buildsystem(7)`
|
||||||
expressions.
|
manual for more on defining buildsystem properties.
|
||||||
|
|
|
@ -9,60 +9,49 @@ Link a target to given libraries.
|
||||||
[[debug|optimized|general] <item>] ...)
|
[[debug|optimized|general] <item>] ...)
|
||||||
|
|
||||||
Specify libraries or flags to use when linking a given target. The
|
Specify libraries or flags to use when linking a given target. The
|
||||||
named <target> must have been created in the current directory by a
|
named ``<target>`` must have been created in the current directory by a
|
||||||
command such as add_executable or add_library. The remaining
|
command such as :command:`add_executable` or :command:`add_library`. The
|
||||||
arguments specify library names or flags. Repeated calls for the same
|
remaining arguments specify library names or flags. Repeated calls for
|
||||||
<target> append items in the order called.
|
the same ``<target>`` append items in the order called.
|
||||||
|
|
||||||
If a library name matches that of another target in the project a
|
If a library name matches that of another target in the project a
|
||||||
dependency will automatically be added in the build system to make
|
dependency will automatically be added in the build system to make sure
|
||||||
sure the library being linked is up-to-date before the target links.
|
the library being linked is up-to-date before the target links. Item names
|
||||||
Item names starting with '-', but not '-l' or '-framework', are
|
starting with ``-``, but not ``-l`` or ``-framework``, are treated as
|
||||||
treated as linker flags.
|
linker flags.
|
||||||
|
|
||||||
A "debug", "optimized", or "general" keyword indicates that the
|
A ``debug``, ``optimized``, or ``general`` keyword indicates that the
|
||||||
library immediately following it is to be used only for the
|
library immediately following it is to be used only for the
|
||||||
corresponding build configuration. The "debug" keyword corresponds to
|
corresponding build configuration. The ``debug`` keyword corresponds to
|
||||||
the Debug configuration (or to configurations named in the
|
the Debug configuration (or to configurations named in the
|
||||||
DEBUG_CONFIGURATIONS global property if it is set). The "optimized"
|
:prop_gbl:`DEBUG_CONFIGURATIONS` global property if it is set). The
|
||||||
keyword corresponds to all other configurations. The "general"
|
``optimized`` keyword corresponds to all other configurations. The
|
||||||
keyword corresponds to all configurations, and is purely optional
|
``general`` keyword corresponds to all configurations, and is purely
|
||||||
(assumed if omitted). Higher granularity may be achieved for
|
optional (assumed if omitted). Higher granularity may be achieved for
|
||||||
per-configuration rules by creating and linking to IMPORTED library
|
per-configuration rules by creating and linking to
|
||||||
targets. See the IMPORTED mode of the add_library command for more
|
:ref:`IMPORTED library targets <Imported Targets>`.
|
||||||
information.
|
|
||||||
|
|
||||||
Library dependencies are transitive by default with this signature.
|
Library dependencies are transitive by default with this signature.
|
||||||
When this target is linked into another target then the libraries
|
When this target is linked into another target then the libraries
|
||||||
linked to this target will appear on the link line for the other
|
linked to this target will appear on the link line for the other
|
||||||
target too. This transitive "link interface" is stored in the
|
target too. This transitive "link interface" is stored in the
|
||||||
INTERFACE_LINK_LIBRARIES target property when policy CMP0022 is set to
|
:prop_tgt:`INTERFACE_LINK_LIBRARIES` target property and may be overridden
|
||||||
NEW and may be overridden by setting the property directly.
|
by setting the property directly. When :policy:`CMP0022` is not set to
|
||||||
(When CMP0022 is not set to NEW, transitive linking is builtin but may
|
``NEW``, transitive linking is built in but may be overridden by the
|
||||||
be overridden by the LINK_INTERFACE_LIBRARIES property. Calls to other
|
:prop_tgt:`LINK_INTERFACE_LIBRARIES` property. Calls to other signatures
|
||||||
signatures of this command may set the property making any libraries
|
of this command may set the property making any libraries linked
|
||||||
linked exclusively by this signature private.)
|
exclusively by this signature private.
|
||||||
|
|
||||||
CMake will also propagate "usage requirements" from linked library
|
CMake will also propagate :ref:`usage requirements <Target Usage Requirements>`
|
||||||
targets. Usage requirements affect compilation of sources in the
|
from linked library targets. Usage requirements of dependencies affect
|
||||||
<target>. They are specified by properties defined on linked targets.
|
compilation of sources in the ``<target>``.
|
||||||
During generation of the build system, CMake integrates usage
|
|
||||||
requirement property values with the corresponding build properties
|
|
||||||
for <target>:
|
|
||||||
|
|
||||||
::
|
If an ``<item>`` is a library in a Mac OX framework, the ``Headers``
|
||||||
|
directory of the framework will also be processed as a
|
||||||
|
:ref:`usage requirement <Target Usage Requirements>`. This has the same
|
||||||
|
effect as passing the framework directory as an include directory.
|
||||||
|
|
||||||
INTERFACE_COMPILE_DEFINITONS: Appends to COMPILE_DEFINITONS
|
--------------------------------------------------------------------------
|
||||||
INTERFACE_INCLUDE_DIRECTORIES: Appends to INCLUDE_DIRECTORIES
|
|
||||||
INTERFACE_POSITION_INDEPENDENT_CODE: Sets POSITION_INDEPENDENT_CODE
|
|
||||||
or checked for consistency with existing value
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
If an <item> is a library in a Mac OX framework, the Headers directory
|
|
||||||
of the framework will also be processed as a "usage requirement".
|
|
||||||
This has the same effect as passing the framework directory as an
|
|
||||||
include directory.
|
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
|
@ -70,34 +59,44 @@ include directory.
|
||||||
<PRIVATE|PUBLIC|INTERFACE> <lib> ...
|
<PRIVATE|PUBLIC|INTERFACE> <lib> ...
|
||||||
[<PRIVATE|PUBLIC|INTERFACE> <lib> ... ] ...])
|
[<PRIVATE|PUBLIC|INTERFACE> <lib> ... ] ...])
|
||||||
|
|
||||||
The PUBLIC, PRIVATE and INTERFACE keywords can be used to specify both
|
The ``PUBLIC``, ``PRIVATE`` and ``INTERFACE`` keywords can be used to
|
||||||
the link dependencies and the link interface in one command.
|
specify both the link dependencies and the link interface in one command.
|
||||||
Libraries and targets following PUBLIC are linked to, and are made
|
Libraries and targets following ``PUBLIC`` are linked to, and are made
|
||||||
part of the link interface. Libraries and targets following PRIVATE
|
part of the link interface. Libraries and targets following ``PRIVATE``
|
||||||
are linked to, but are not made part of the link interface. Libraries
|
are linked to, but are not made part of the link interface. Libraries
|
||||||
following INTERFACE are appended to the link interface and are not
|
following ``INTERFACE`` are appended to the link interface and are not
|
||||||
used for linking <target>.
|
used for linking ``<target>``.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
target_link_libraries(<target> LINK_INTERFACE_LIBRARIES
|
target_link_libraries(<target> LINK_INTERFACE_LIBRARIES
|
||||||
[[debug|optimized|general] <lib>] ...)
|
[[debug|optimized|general] <lib>] ...)
|
||||||
|
|
||||||
The LINK_INTERFACE_LIBRARIES mode appends the libraries to the
|
The ``LINK_INTERFACE_LIBRARIES`` mode appends the libraries to the
|
||||||
INTERFACE_LINK_LIBRARIES target property instead of using them for
|
:prop_tgt:`INTERFACE_LINK_LIBRARIES` target property instead of using them
|
||||||
linking. If policy CMP0022 is not NEW, then this mode also appends
|
for linking. If policy :policy:`CMP0022` is not ``NEW``, then this mode
|
||||||
libraries to the LINK_INTERFACE_LIBRARIES and its per-configuration
|
also appends libraries to the :prop_tgt:`LINK_INTERFACE_LIBRARIES` and its
|
||||||
equivalent. This signature is for compatibility only. Prefer the
|
per-configuration equivalent.
|
||||||
INTERFACE mode instead. Libraries specified as "debug" are wrapped in
|
|
||||||
a generator expression to correspond to debug builds. If policy
|
This signature is for compatibility only. Prefer the ``INTERFACE`` mode
|
||||||
CMP0022 is not NEW, the libraries are also appended to the
|
instead.
|
||||||
LINK_INTERFACE_LIBRARIES_DEBUG property (or to the properties
|
|
||||||
corresponding to configurations listed in the DEBUG_CONFIGURATIONS
|
Libraries specified as ``debug`` are wrapped in a generator expression to
|
||||||
global property if it is set). Libraries specified as "optimized" are
|
correspond to debug builds. If policy :policy:`CMP0022` is
|
||||||
appended to the INTERFACE_LINK_LIBRARIES property. If policy CMP0022
|
not ``NEW``, the libraries are also appended to the
|
||||||
is not NEW, they are also appended to the LINK_INTERFACE_LIBRARIES
|
:prop_tgt:`LINK_INTERFACE_LIBRARIES_DEBUG <LINK_INTERFACE_LIBRARIES_<CONFIG>>`
|
||||||
property. Libraries specified as "general" (or without any keyword)
|
property (or to the properties corresponding to configurations listed in
|
||||||
are treated as if specified for both "debug" and "optimized".
|
the :prop_gbl:`DEBUG_CONFIGURATIONS` global property if it is set).
|
||||||
|
Libraries specified as ``optimized`` are appended to the
|
||||||
|
:prop_tgt:`INTERFACE_LINK_LIBRARIES` property. If policy :policy:`CMP0022`
|
||||||
|
is not ``NEW``, they are also appended to the
|
||||||
|
:prop_tgt:`LINK_INTERFACE_LIBRARIES` property. Libraries specified as
|
||||||
|
``general`` (or without any keyword) are treated as if specified for both
|
||||||
|
``debug`` and ``optimized``.
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------
|
||||||
|
|
||||||
::
|
::
|
||||||
|
|
||||||
|
@ -107,23 +106,26 @@ are treated as if specified for both "debug" and "optimized".
|
||||||
[<LINK_PRIVATE|LINK_PUBLIC>
|
[<LINK_PRIVATE|LINK_PUBLIC>
|
||||||
[[debug|optimized|general] <lib>] ...])
|
[[debug|optimized|general] <lib>] ...])
|
||||||
|
|
||||||
The LINK_PUBLIC and LINK_PRIVATE modes can be used to specify both the
|
The ``LINK_PUBLIC`` and ``LINK_PRIVATE`` modes can be used to specify both
|
||||||
link dependencies and the link interface in one command. This
|
the link dependencies and the link interface in one command.
|
||||||
signature is for compatibility only. Prefer the PUBLIC or PRIVATE
|
|
||||||
keywords instead. Libraries and targets following LINK_PUBLIC are
|
|
||||||
linked to, and are made part of the INTERFACE_LINK_LIBRARIES. If
|
|
||||||
policy CMP0022 is not NEW, they are also made part of the
|
|
||||||
LINK_INTERFACE_LIBRARIES. Libraries and targets following
|
|
||||||
LINK_PRIVATE are linked to, but are not made part of the
|
|
||||||
INTERFACE_LINK_LIBRARIES (or LINK_INTERFACE_LIBRARIES).
|
|
||||||
|
|
||||||
The library dependency graph is normally acyclic (a DAG), but in the
|
This signature is for compatibility only. Prefer the ``PUBLIC`` or
|
||||||
case of mutually-dependent STATIC libraries CMake allows the graph to
|
``PRIVATE`` keywords instead.
|
||||||
contain cycles (strongly connected components). When another target
|
|
||||||
links to one of the libraries CMake repeats the entire connected
|
|
||||||
component. For example, the code
|
|
||||||
|
|
||||||
::
|
Libraries and targets following ``LINK_PUBLIC`` are linked to, and are
|
||||||
|
made part of the :prop_tgt:`INTERFACE_LINK_LIBRARIES`. If policy
|
||||||
|
:policy:`CMP0022` is not ``NEW``, they are also made part of the
|
||||||
|
:prop_tgt:`LINK_INTERFACE_LIBRARIES`. Libraries and targets following
|
||||||
|
``LINK_PRIVATE`` are linked to, but are not made part of the
|
||||||
|
:prop_tgt:`INTERFACE_LINK_LIBRARIES` (or :prop_tgt:`LINK_INTERFACE_LIBRARIES`).
|
||||||
|
|
||||||
|
The library dependency graph is normally acyclic (a DAG), but in the case
|
||||||
|
of mutually-dependent ``STATIC`` libraries CMake allows the graph to
|
||||||
|
contain cycles (strongly connected components). When another target links
|
||||||
|
to one of the libraries, CMake repeats the entire connected component.
|
||||||
|
For example, the code
|
||||||
|
|
||||||
|
.. code-block:: cmake
|
||||||
|
|
||||||
add_library(A STATIC a.c)
|
add_library(A STATIC a.c)
|
||||||
add_library(B STATIC b.c)
|
add_library(B STATIC b.c)
|
||||||
|
@ -132,15 +134,16 @@ component. For example, the code
|
||||||
add_executable(main main.c)
|
add_executable(main main.c)
|
||||||
target_link_libraries(main A)
|
target_link_libraries(main A)
|
||||||
|
|
||||||
links 'main' to 'A B A B'. (While one repetition is usually
|
links ``main`` to ``A B A B``. While one repetition is usually
|
||||||
sufficient, pathological object file and symbol arrangements can
|
sufficient, pathological object file and symbol arrangements can require
|
||||||
require more. One may handle such cases by manually repeating the
|
more. One may handle such cases by manually repeating the component in
|
||||||
component in the last target_link_libraries call. However, if two
|
the last ``target_link_libraries`` call. However, if two archives are
|
||||||
archives are really so interdependent they should probably be combined
|
really so interdependent they should probably be combined into a single
|
||||||
into a single archive.)
|
archive.
|
||||||
|
|
||||||
Arguments to target_link_libraries may use "generator expressions"
|
Arguments to target_link_libraries may use "generator expressions"
|
||||||
with the syntax ``$<...>``. Note however, that generator expressions
|
with the syntax ``$<...>``. Note however, that generator expressions
|
||||||
will not be used in OLD handling of CMP0003 or CMP0004.
|
will not be used in OLD handling of :policy:`CMP0003` or :policy:`CMP0004`.
|
||||||
See the :manual:`cmake-generator-expressions(7)` manual for available
|
See the :manual:`cmake-generator-expressions(7)` manual for available
|
||||||
expressions.
|
expressions. See the :manual:`cmake-buildsystem(7)` manual for more on
|
||||||
|
defining buildsystem properties.
|
||||||
|
|
Loading…
Reference in New Issue