add_executable -------------- Add an executable to the project using the specified source files. :: add_executable( [WIN32] [MACOSX_BUNDLE] [EXCLUDE_FROM_ALL] source1 [source2 ...]) Adds an executable target called ```` to be built from the source files listed in the command invocation. The ```` 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 ``.exe`` or just ````. 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 ```` 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( IMPORTED [GLOBAL]) An :ref:`IMPORTED executable target ` 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_`) which specifies the location of the main executable file on disk. See documentation of the ``IMPORTED_*`` properties for more information. -------------------------------------------------------------------------- :: add_executable( ALIAS ) Creates an :ref:`Alias Target `, such that ```` can be used to refer to ```` in subsequent commands. The ```` does not appear in the generated buildsystem as a make target. The ```` may not be an :ref:`Imported Target ` 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 ```` may not be used to modify properties of ````, 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.