Specifies build flags to modify the compiling or linking process.

```lua
flags { "flag_list" }
```

### Parameters ###

`flag_list` is a list of string flag names; see below for a list of valid flags. The flag values are not case-sensitive. Flags that are not supported by a particular platform or toolset are ignored.

| Flag                  | Description                                                         | Notes |
|-----------------------|---------------------------------------------------------------------|----------------|
| ExcludeFromBuild      | Exclude a source code file from the build, for the current configuration. |
| FatalCompileWarnings  | Treat compiler warnings as errors.                                  |
| FatalLinkWarnings     | Treat linker warnings as errors.                                    |
| FatalWarnings         | Treat all warnings as errors; equivalent to FatalCompileWarnings, FatalLinkWarnings |
| LinkTimeOptimization  | Enable link-time (i.e. whole program) optimizations.                |
| Maps                  | Enable Generate Map File for Visual Studio                          |
| MFC                   | Enable support for Microsoft Foundation Classes.                    |
| MultiProcessorCompile | Enable Visual Studio to use multiple compiler processes when building. |
| No64BitChecks         | Disable 64-bit portability warnings.                                |
| NoBufferSecurityCheck | Turn off stack protection checks.                                   |
| NoCopyLocal           | Prevent referenced assemblies from being copied to the target directory (C#) |
| NoFramePointer        | Disable the generation of stack frame pointers.                     |
| NoImplicitLink        | Disable Visual Studio's default behavior of automatically linking dependent projects. |
| NoImportLib           | Prevent the generation of an import library for a Windows DLL.      |
| NoIncrementalLink     | Disable support for Visual Studio's incremental linking feature.    |
| NoManifest            | Prevent the generation of a manifest for Windows executables and shared libraries. |
| NoMinimalRebuild      | Disable Visual Studio's [minimal rebuild feature][1].| Visual Studio has deprecated this feature as of vs2015.|
| NoPCH                 | Disable precompiled header support. If not specified, the toolset default behavior will be used. |
| NoRuntimeChecks       | Disable Visual Studio's [default stack frame and uninitialized variable checks][2] on debug builds. |
| OmitDefaultLibrary    | Omit the specification of a runtime library in object files.        |
| RelativeLinks         | Forces the linker to use relative paths to libraries instead of absolute paths. |
| ShadowedVariables     | Warn when a variable, type declaration, or function is shadowed.    |
| StaticRuntime         | Perform a static link against the standard runtime libraries.       | Deprecated - use staticruntime "On" instead. |
| UndefinedIdentifiers | Warn if an undefined identifier is evaluated in an #if directive.   |
| WinMain               | Use `WinMain()` as entry point for Windows applications, rather than the default `main()`. |
| WPF                   | Mark the project as using Windows Presentation Framework, rather than WinForms. |
| C++11                 | Pass the c++11 flag to the gcc/clang compilers (msvc ignores this currently) |
| C++14                 | Pass the c++14 flag to the gcc/clang compilers (msvc ignores this currently) |
| C90                   | Pass the c90 flag to the gcc/clang compilers (msvc ignores this currently) |
| C99                   | Pass the c99 flag to the gcc/clang compilers (msvc ignores this currently) |

### Applies To ###

Project and file configurations, though not all flags are yet supported for files across all exporters.

### Availability ###

Unless otherwise noted, Premake 5.0 or later.

### Examples ###

```lua
-- Enable link-time (i.e. whole program) optimizations.
flags { "LinkTimeOptimization" }

```

[1]: https://docs.microsoft.com/en-us/cpp/build/reference/gm-enable-minimal-rebuild?view=vs-2017
[2]: http://msdn.microsoft.com/en-us/library/8wtf2dfz.aspx
