Skip to content

fix(android): allow overriding CMake version for Windows long-path builds#265

Open
mfazekas wants to merge 3 commits into
mainfrom
fix/configurable-cmake-version-windows-long-path
Open

fix(android): allow overriding CMake version for Windows long-path builds#265
mfazekas wants to merge 3 commits into
mainfrom
fix/configurable-cmake-version-windows-long-path

Conversation

@mfazekas
Copy link
Copy Markdown
Collaborator

@mfazekas mfazekas commented May 20, 2026

Fixes #263

On Windows, the Android build fails when CMake object-file paths exceed MAX_PATH (260 chars). The NDK default CMake (3.22.1) can't handle the deeply-nested paths from Nitrogen's generated sources.

This is a known issue across React Native libraries that use CMake. Adds support for the CMAKE_VERSION env var (same as Reanimated) so users can opt into a newer CMake (e.g. 3.31.6) that handles long paths.

mfazekas added 3 commits May 20, 2026 07:56
…ilds

On Windows the NDK default CMake (3.22.1) fails when object-file paths
exceed MAX_PATH (260 chars). A newer CMake (3.31.6) handles this.
Add Rive_CmakeVersion gradle property / CMAKE_VERSION env var to opt in.
Comment thread README.md

</details>

## Building on Windows (CMake long-path failures)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mind adding this to the docs as well?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, I see we're referencing the reanimated docs, is that intentional?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah that was intentional. We can also copy the relevant parts to our docs.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses Windows-specific Android build failures caused by long/absolute CMake object-file paths by allowing consumers to override the CMake version via an environment variable.

Changes:

  • Documented the Windows Android build failure mode and recommended using a newer CMake.
  • Added support in Gradle to override the CMake version using the CMAKE_VERSION environment variable.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
README.md Adds Windows build guidance and instructions for using CMAKE_VERSION to mitigate long-path CMake/Ninja failures.
android/build.gradle Reads CMAKE_VERSION from the environment and applies it to the Android Gradle externalNativeBuild CMake configuration.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md

## Building on Windows (CMake long-path failures)

On Windows, the Android build can fail with `ninja: error: mkdir(CMakeFiles/rive.dir/...): No such file or directory` due to the Windows `MAX_PATH` (260 character) limit. This is a [known issue across React Native libraries that use CMake](https://docs.swmansion.com/react-native-reanimated/docs/guides/building-on-windows/). Set `CMAKE_VERSION=3.31.6` before building — see the Reanimated docs for full setup instructions.
Comment thread README.md

## Building on Windows (CMake long-path failures)

On Windows, the Android build can fail with `ninja: error: mkdir(CMakeFiles/rive.dir/...): No such file or directory` due to the Windows `MAX_PATH` (260 character) limit. This is a [known issue across React Native libraries that use CMake](https://docs.swmansion.com/react-native-reanimated/docs/guides/building-on-windows/). Set `CMAKE_VERSION=3.31.6` before building — see the Reanimated docs for full setup instructions.
Comment thread android/build.gradle
Comment on lines +72 to +73
// On Windows the NDK default CMake (3.22.1) fails when object-file
// paths exceed MAX_PATH (260 chars). Set CMAKE_VERSION=3.31.6 to fix.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Android/Windows] ninja mkdir fails for arm64-v8a build: absolute path with drive letter creates unresolvable C_/ directory

3 participants