name: executable returns: exe description: | Creates a new executable. The first argument specifies its name and the remaining positional arguments define the input files to use. The lists for the kwargs (such as `sources`, `objects`, and `dependencies`) are always flattened, which means you can freely nest and add lists while creating the final list. The returned object also has methods that are documented in [[@exe]]. *Since 1.3.0* executable names can be the same across multiple targets as long as they each have a different `name_suffix`. warnings: - The `link_language` kwarg was broken until 0.55.0 posargs_inherit: _build_target_base varargs_inherit: _build_target_base kwargs_inherit: _build_target_base kwargs: export_dynamic: type: bool since: 0.45.0 description: | when set to true causes the target's symbols to be dynamically exported, allowing modules built using the [[shared_module]] function to refer to functions, variables and other symbols defined in the executable itself. Implies the `implib` argument. implib: type: bool | str since: 0.42.0 description: | When set to true, an import library is generated for the executable (the name of the import library is based on *exe_name*). Alternatively, when set to a string, that gives the base name for the import library. The import library is used when the returned build target object appears in `link_with:` elsewhere. Only has any effect on platforms where that is meaningful (e.g. Windows). Implies the `export_dynamic` argument. pie: type: bool since: 0.49.0 description: Build a position-independent executable. vs_module_defs: type: str | file | custom_tgt | custom_idx since: 1.3.0 description: | Specify a Microsoft module definition file for controlling symbol exports, etc., on platforms where that is possible (e.g. Windows). This can be used to expose which functions a shared_module loaded by an executable will be allowed to use.