| # 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. |