---
title: Build Settings
---

Premake provides an ever-growing list of build settings that you can tweak; the following table lists some of the most common configuration tasks with a link to the corresponding functions. For a comprehensive list of available settings and functions, see the [Project API](Project-API.md) and [Lua Library Additions](Lua-Library-Additions.md).

If you think something should be possible and you can't figure out how to do it, see [Support](/community/support).

|                                               |                      |
|-----------------------------------------------|----------------------|
| Specify the binary type (executable, library) | [kind](kind.md) |
| Specify source code files  | [files](files.md), [removefiles](files.md)  |
| Define compiler or preprocessor symbols   | [defines](defines.md)  |
| Locate include files | [includedirs](includedirs.md) |
| Set up precompiled headers | [pchheader](pchheader.md), [pchsource](pchsource.md) |
| Link libraries, frameworks, or other projects | [links](links.md), [libdirs](libdirs.md) |
| Enable debugging information | [symbols](symbols.md) |
| Optimize for size or speed | [optimize](optimize.md) |
| Add arbitrary build flags | [buildoptions](buildoptions.md), [linkoptions](linkoptions.md) |
| Set the name or location of compiled targets | [targetname](targetname.md), [targetdir](targetdir.md) |