e5da9e51d0
Remove use of UseObjectLibraries from Makefile and Ninja generators. It is not needed now because those generators use GetExternalObjects which already contains the objects from object libraries. The VS10 generator calls both the UseObjectLibraries and the GetExternalObjects methods. Ensure that duplicates are not created by skipping objects from object libraries in handling of GetExternalObjects. Similarly, fix VS6, VS7 and Xcode object handling by skipping external objects from OBJECT_LIBRARY usage as appropriate. The error message in the BadSourceExpression1 test is now reported by the generator expression evaluator, so it has different text.
81 lines
3.6 KiB
ReStructuredText
81 lines
3.6 KiB
ReStructuredText
add_executable
|
|
--------------
|
|
|
|
Add an executable to the project using the specified source files.
|
|
|
|
::
|
|
|
|
add_executable(<name> [WIN32] [MACOSX_BUNDLE]
|
|
[EXCLUDE_FROM_ALL]
|
|
source1 [source2 ...])
|
|
|
|
Adds an executable target called ``<name>`` to be built from the source
|
|
files listed in the command invocation. The ``<name>`` corresponds to the
|
|
logical target name and must be globally unique within a project. The
|
|
actual file name of the executable built is constructed based on
|
|
conventions of the native platform (such as ``<name>.exe`` or just
|
|
``<name>``.
|
|
|
|
By default the executable file will be created in the build tree
|
|
directory corresponding to the source tree directory in which the
|
|
command was invoked. See documentation of the
|
|
:prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` target property to change this
|
|
location. See documentation of the :prop_tgt:`OUTPUT_NAME` target property
|
|
to change the ``<name>`` part of the final file name.
|
|
|
|
If ``WIN32`` is given the property :prop_tgt:`WIN32_EXECUTABLE` will be
|
|
set on the target created. See documentation of that target property for
|
|
details.
|
|
|
|
If ``MACOSX_BUNDLE`` is given the corresponding property will be set on
|
|
the created target. See documentation of the :prop_tgt:`MACOSX_BUNDLE`
|
|
target property for details.
|
|
|
|
If ``EXCLUDE_FROM_ALL`` is given the corresponding property will be set on
|
|
the created target. See documentation of the :prop_tgt:`EXCLUDE_FROM_ALL`
|
|
target property for details.
|
|
|
|
Source arguments to ``add_executable`` 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.
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
|
|
::
|
|
|
|
add_executable(<name> IMPORTED [GLOBAL])
|
|
|
|
An :ref:`IMPORTED executable target <Imported Targets>` references an
|
|
executable file located outside the project. No rules are generated to
|
|
build it, and the :prop_tgt:`IMPORTED` target property is ``True``. The
|
|
target name has scope in the directory in which it is created and below, but
|
|
the ``GLOBAL`` option extends visibility. It may be referenced like any
|
|
target built within the project. ``IMPORTED`` executables are useful
|
|
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
|
|
:prop_tgt:`IMPORTED_LOCATION` (and its per-configuration version
|
|
:prop_tgt:`IMPORTED_LOCATION_<CONFIG>`) which specifies the location of
|
|
the main executable file on disk. See documentation of the ``IMPORTED_*``
|
|
properties for more information.
|
|
|
|
--------------------------------------------------------------------------
|
|
|
|
::
|
|
|
|
add_executable(<name> ALIAS <target>)
|
|
|
|
Creates an :ref:`Alias Target <Alias Targets>`, such that ``<name>`` can
|
|
be used to refer to ``<target>`` in subsequent commands. The ``<name>``
|
|
does not appear in the generated buildsystem as a make target. The
|
|
``<target>`` may not be an :ref:`Imported Target <Imported Targets>` or an
|
|
``ALIAS``. ``ALIAS`` targets can be used as targets to read properties
|
|
from, executables for custom commands and custom targets. They can also be
|
|
tested for existance with the regular :command:`if(TARGET)` subcommand.
|
|
The ``<name>`` may not be used to modify properties of ``<target>``, that
|
|
is, it may not be used as the operand of :command:`set_property`,
|
|
:command:`set_target_properties`, :command:`target_link_libraries` etc.
|
|
An ``ALIAS`` target may not be installed or exported.
|