Environment
- nRF Connect SDK: v3.2.1
- Zephyr: 4.2.99 (NCS fork)
- CMake (bundled): 3.21.0
- Board:
nrf5340dk_nrf5340_cpuapp - OS: Linux
Problem
Since upgrading from NCS v2.6.4 to v3.2.1, building 'west build' with a CMake preset no longer works:
CMake Error: Could not read presets from /home/user/ncs/v3.2.1/zephyr/share/sysbuild: File not found
This worked fine in NCS v2.6.4.
Root cause
In NCS v3.x, sysbuild is enabled by default. When sysbuild is active, west invokes CMake with -S <ncs>/zephyr/share/sysbuild instead of -S <project_root>. CMake 3.21 resolves --preset relative to the -S directory, so it looks for CMakePresets.json inside the NCS sysbuild directory — not in the project root where it actually lives — and fails with "File not found".
In NCS v2.6.4, sysbuild was not the default, so CMake was pointed at the project root and presets resolved correctly.
The Nordic documentation at https://docs.nordicsemi.com/bundle/nrf-connect-vscode/page/guides/build_config.html#from-the-panel-view still shows:
…but this does not work with NCS v3.x from the CLI.
Workaround
Expand the preset manually into explicit -D flag.
Alternatively, using --no-sysbuild does not help because sysbuild is required for the mcuboot + hci_ipc multi-image build.
Questions
- Is there an official supported way to use CMakePresets.json from the CLI with NCS v3.x + sysbuild enabled?
- Is the documentation going to be updated to reflect this change?
Related issues
Here some related issues but without a solution that helped me:
- https://github.com/zephyrproject-rtos/zephyr/discussions/75466
- How to use CMakePresets with west and sysbuild in NCS v2.7.0?
AI Answer
AI suggests to just follow: https://docs.nordicsemi.com/bundle/ncs-latest/page/zephyr/build/sysbuild/index.html#sysbuild_and_cmake_presets, but note:
Using CMake presets with sysbuild requires CMake version 3.27 or higher.
But the CMake version bundled in nRF SDK 3.2.1 is the v3.21
Thanks