| # CMake Presets | |
| We are experimenting with CMake presets for setting up the project in | |
| various ways. Because these can interact badly with tools, we do not | |
| yet have a `CMakePresets.json` in the root project folder, instead | |
| requiring someone to add one themselves and include presets from here. | |
| Once this is tested some more, we will enable by default. For now, | |
| create a `CMakeUserPresets.json` in the project root and put this in it: | |
| ``` | |
| { | |
| "version": 4, | |
| "cmakeMinimumRequired": { | |
| "major": 3, | |
| "minor": 23, | |
| "patch": 0 | |
| }, | |
| "include": [ | |
| "build_tools/cmake/presets/all.json" | |
| ] | |
| } | |
| ``` | |
| ## Using Presets | |
| There are two variants of presets that we use: | |
| * `new-{os}-{variant}`: Sets up a new dev directory as documented | |
| [on the website](https://iree.dev/building-from-source/getting-started/#quickstart-clone-and-build) | |
| with various further options. This is run from a source directory and will | |
| set up the generator and build into `../iree-build`. | |
| * `{variant}`: The raw variant options can be set at any time from | |
| a build directory with `cmake --preset {variant} .`. | |
| Since the 'new' variants are OS specific, you must use the one appropriate | |
| for your operating system. One of "linux", "macos", "windows". | |
| ## New Project Presets | |
| * `cmake --preset new-{os}-dev`: Start a new dev build with CMake defaults for | |
| all project features. | |
| * `cmake --preset new-{os}-minimal`: Start a new dev build with all optional | |
| project features disabled. While not particularly useful, this lets selected | |
| features be enabled as needed. | |
| * `cmake --preset new-{os}-turbine`: Start a new dev build with all optional | |
| project features disabled except those needed to do Turbine development ( | |
| currently CPU backend, Torch input, and Python bindings). | |
| ## Existing Project Presets | |
| An existing build directory can have its CMake options redefined with | |
| these presets: | |
| * `cmake . --preset minimal`: Disable all optional project features. | |
| * `cmake . --preset python-bindings`: Enable Python bindings in dev mode. | |
| * `cmake . --preset turbine`: Disable all optional project features except | |
| those needed for Turbine development on CPU. |