Repository navigation
Cannot build from source on Android on Windows, CMake reporting "broken" compiler. #37770
Description
Description
Hi there,
For a project, we need to build React Native from source. This is required for us, as we need to apply the following fix to React Native, which was approved to merge into the main React Native repo, but was never merged due to React Native renaming the branch and accidentally scrapping the PR: #28659 (comment)
If the above issue could be picked up again and merged-in to the main repo (it was fully approved and ready to merge before the branch rename!), that would also be much appreciated!
I'm running on Windows 10 (Version 10.0.19045 Build 19045), and I'm having some difficulties trying to build a boilerplate React Native project, whilst building React Native from source. I've followed the steps described here: https://reactnative.dev/contributing/how-to-build-from-source
Due to running on Windows, I am unable to see if the issue also happens when running an iOS build.
However, when trying to run the Android build, I get an error from cmake at the :react-native:ReactAndroid:hermes-engine:configureBuildForHermes stage.
I'll provide the FULL command line output below.
If I undo the steps provided in the "build from source" link (Removing the extra lines from android/settings.gradle), then the build works, so I'm fairly sure something's going wrong when building from source for me. I'll provide images of my Android Studio settings (NDK, SDK, Build tool versions, etc.) below too.
If there's any other information you'd like from me / my environment, please let me know. Thanks!
React Native Version
0.71.8
Updated to 0.71.10
Output of npx react-native info
info Fetching system and libraries information...
System:
OS: Windows 10 10.0.19045
CPU: (8) x64 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz
Memory: 16.20 GB / 39.69 GB
Binaries:
Node: 16.17.0 - C:\Program Files\nodejs\node.EXE
Yarn: 1.22.19 - C:\Program Files\nodejs\yarn.CMD
npm: 8.15.0 - C:\Program Files\nodejs\npm.CMD
Watchman: Not Found
SDKs:
Android SDK:
API Levels: 29, 31, 32, 33, 33
Build Tools: 30.0.3, 31.0.0, 33.0.0
System Images: android-31 | Google APIs Intel x86_64 Atom
Android NDK: Not Found
Windows SDK:
AllowDevelopmentWithoutDevLicense: Enabled
Versions: 10.0.20348.0, 10.0.22000.0
IDEs:
Android Studio: AI-222.4459.24.2221.9862592
Visual Studio: 17.6.33723.286 (Visual Studio Community 2022)
Languages:
Java: Not Found
npmPackages:
@react-native-community/cli: Not Found
react: 18.2.0 => 18.2.0
react-native: 0.71.8 => 0.71.8
react-native-windows: Not Found
npmGlobalPackages:
*react-native*: Not Found
Steps to reproduce
- Create a boilerplate React Native app. (
npx react-native init AwesomeProject) npm install, etc.- Build once to ensure you've set everything up properly.
- Add the extra lines to your
android/settings.gradlefile, as required here: https://reactnative.dev/contributing/how-to-build-from-source - Go into the
android/directory and rungradlew clean. Go up one level and reinstall yournode_modulesto ensure everything is fresh. - After, initiate an Android build with
npm run android - This should now fail at the
:react-native:ReactAndroid:hermes-engine:configureBuildForHermesstage, with a CMake error.
Snack, code example, screenshot, or link to a repository
Steps to reproduce the issue on a blank project are linked above.
Full command line output from npm run android:
PS C:\MYOXYGEN-REPOS\PERSONAL\cicdtest> npm run android
> cicdtest@0.0.1 android
> react-native run-android
info Starting JS server...
info Installing the app...
> Task :react-native:ReactAndroid:hermes-engine:downloadHermes
Download https://github.com/facebook/hermes/tarball/hermes-2023-03-07-RNv0.71.4-31fdcf738940875c9bacf251e149006cf515d763
> Task :react-native:ReactAndroid:hermes-engine:configureBuildForHermes FAILED
-- The C compiler identification is MSVC 19.36.32532.0
-- The CXX compiler identification is MSVC 19.36.32532.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - failed
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.36.32532/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.36.32532/bin/Hostx64/x64/cl.exe - broken
-- Configuring incomplete, errors occurred!
See also "C:/MYOXYGEN-REPOS/PERSONAL/cicdtest/node_modules/react-native/ReactAndroid/hermes-engine/build/hermes/CMakeFiles/CMakeOutput.log".
See also "C:/MYOXYGEN-REPOS/PERSONAL/cicdtest/node_modules/react-native/ReactAndroid/hermes-engine/build/hermes/CMakeFiles/CMakeError.log".
22 actionable tasks: 22 executed
CMake Deprecation Warning at CMakeLists.txt:42 (cmake_policy):
The OLD behavior for policy CMP0026 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
CMake Error at C:/ANDROID_SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake:69 (message):
The C compiler
"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.36.32532/bin/Hostx64/x64/cl.exe"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/MYOXYGEN-REPOS/PERSONAL/cicdtest/node_modules/react-native/ReactAndroid/hermes-engine/build/hermes/CMakeFiles/CMakeTmp
Run Build Command(s):nmake -f Makefile /nologo cmTC_ddf64\fast && "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\nmake.exe" -f CMakeFiles\cmTC_ddf64.dir\build.make /nologo -L CMakeFiles\cmTC_ddf64.dir\build
Building C object CMakeFiles/cmTC_ddf64.dir/testCCompiler.c.obj
C:\ANDROID_SDK\cmake\3.22.1\bin\cmake.exe -E cmake_cl_compile_depends --dep-file=CMakeFiles\cmTC_ddf64.dir\testCCompiler.c.obj.d --working-dir=C:\MYOXYGEN-REPOS\PERSONAL\cicdtest\node_modules\react-native\ReactAndroid\hermes-engine\build\hermes\CMakeFiles\CMakeTmp --filter-prefix="Note: including file: " -- C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1436~1.325\bin\Hostx64\x64\cl.exe @C:\Users\LEWISK~1\AppData\Local\Temp\nmAD48.tmp
testCCompiler.c
Linking C executable cmTC_ddf64.exe
C:\ANDROID_SDK\cmake\3.22.1\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_ddf64.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests -- C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1436~1.325\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\cmTC_ddf64.dir\objects1.rsp @C:\Users\LEWISK~1\AppData\Local\Temp\nmAD97.tmp
RC Pass 1: command "rc /fo CMakeFiles\cmTC_ddf64.dir/manifest.res CMakeFiles\cmTC_ddf64.dir/manifest.rc" failed (exit code 0) with the following output:
The system cannot find the file specifiedNMAKE : fatal error U1077: 'C:\ANDROID_SDK\cmake\3.22.1\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_ddf64.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests -- C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1436~1.325\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\cmTC_ddf64.dir\objects1.rsp @C:\Users\LEWISK~1\AppData\Local\Temp\nmAD97.tmp' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\nmake.exe" -f CMakeFiles\cmTC_ddf64.dir\build.make /nologo -L CMakeFiles\cmTC_ddf64.dir\build' : return code '0x2'
Stop.
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:64 (project)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':react-native:ReactAndroid:hermes-engine:configureBuildForHermes'.
> Process 'command 'cmd'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2m 8s
error Failed to install the app. Make sure you have the Android development environment set up: https://reactnative.dev/docs/environment-setup.
Error: Command failed: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081
CMake Deprecation Warning at CMakeLists.txt:42 (cmake_policy):
The OLD behavior for policy CMP0026 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
CMake Error at C:/ANDROID_SDK/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake:69 (message):
The C compiler
"C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/VC/Tools/MSVC/14.36.32532/bin/Hostx64/x64/cl.exe"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/MYOXYGEN-REPOS/PERSONAL/cicdtest/node_modules/react-native/ReactAndroid/hermes-engine/build/hermes/CMakeFiles/CMakeTmp
Run Build Command(s):nmake -f Makefile /nologo cmTC_ddf64\fast && "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\nmake.exe" -f CMakeFiles\cmTC_ddf64.dir\build.make /nologo -L CMakeFiles\cmTC_ddf64.dir\build
Building C object CMakeFiles/cmTC_ddf64.dir/testCCompiler.c.obj
C:\ANDROID_SDK\cmake\3.22.1\bin\cmake.exe -E cmake_cl_compile_depends --dep-file=CMakeFiles\cmTC_ddf64.dir\testCCompiler.c.obj.d --working-dir=C:\MYOXYGEN-REPOS\PERSONAL\cicdtest\node_modules\react-native\ReactAndroid\hermes-engine\build\hermes\CMakeFiles\CMakeTmp --filter-prefix="Note: including file: " -- C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1436~1.325\bin\Hostx64\x64\cl.exe @C:\Users\LEWISK~1\AppData\Local\Temp\nmAD48.tmp
testCCompiler.c
Linking C executable cmTC_ddf64.exe
C:\ANDROID_SDK\cmake\3.22.1\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_ddf64.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests -- C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1436~1.325\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\cmTC_ddf64.dir\objects1.rsp @C:\Users\LEWISK~1\AppData\Local\Temp\nmAD97.tmp
RC Pass 1: command "rc /fo CMakeFiles\cmTC_ddf64.dir/manifest.res CMakeFiles\cmTC_ddf64.dir/manifest.rc" failed (exit code 0) with the following output:
The system cannot find the file specifiedNMAKE : fatal error U1077: 'C:\ANDROID_SDK\cmake\3.22.1\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_ddf64.dir --rc=rc --mt=CMAKE_MT-NOTFOUND --manifests -- C:\PROGRA~2\MICROS~2\2022\BUILDT~1\VC\Tools\MSVC\1436~1.325\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\cmTC_ddf64.dir\objects1.rsp @C:\Users\LEWISK~1\AppData\Local\Temp\nmAD97.tmp' : return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.36.32532\bin\Hostx64\x64\nmake.exe" -f CMakeFiles\cmTC_ddf64.dir\build.make /nologo -L CMakeFiles\cmTC_ddf64.dir\build' : return code '0x2'
Stop.
CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
CMakeLists.txt:64 (project)
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':react-native:ReactAndroid:hermes-engine:configureBuildForHermes'.
> Process 'command 'cmd'' finished with non-zero exit value 1
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2m 8s
at makeError (C:\MYOXYGEN-REPOS\PERSONAL\cicdtest\node_modules\execa\index.js:174:9)
at C:\MYOXYGEN-REPOS\PERSONAL\cicdtest\node_modules\execa\index.js:278:16
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async runOnAllDevices (C:\MYOXYGEN-REPOS\PERSONAL\cicdtest\node_modules\@react-native-community\cli-platform-android\build\commands\runAndroid\runOnAllDevices.js:82:7)
at async Command.handleAction (C:\MYOXYGEN-REPOS\PERSONAL\cicdtest\node_modules\@react-native-community\cli\build\index.js:108:9)
info Run CLI with --verbose flag for more details.




Activity
github-actions commentedon Jun 8, 2023
MO-Lewis commentedon Jun 8, 2023
Still an issue on 0.71.10, I'll edit the issue with the new RN version; everything previously mentioned in the report still applies.
cortinico commentedon Jun 8, 2023
Please open a new PR with the same code and we can look into it/get it merged.
As for the build from source on Windows, that's sadly more complicated that expected as most of our builds are on MacOS or Linux. We would need someone from Microsoft to take a look at this ideally.
MO-Lewis commentedon Jun 9, 2023
I've added a bit more info to this in the duplicate issue mentioned above: #37780 (comment)
Additionally, I've undone the initial commit that was done by @mganandraj, so we don't use nmake when building from Windows, but then this leads me to the error that this guy is getting here: software-mansion/react-native-reanimated#3594 (comment)
Different repo, but it's still an error that's produced by trying to build the hermes error from source on a Windows machine. As additional info, I do not have the
newArchEnabledflag set totrue.As stated in the other issue ticket, the ideal scenario would be to get mganandraj in on this issue, so we can see how Windows is building RN on his machine.
I've gone into the CMake cache file within the downloaded copy of
hermes-engine(.\React-Project-Root\node_modules\react-native\ReactAndroid\hermes-engine\build\hermes\CMakeCache.txt) to see what variables it resolves and where, and I get the following info. I'd be interested to see what mganandraj's copy of this looks like.mganandraj commentedon Jun 9, 2023
Hi @MO-Lewis .. We regularly build react native from source on Windows. The key is to have a visual studio installation with Native/C++ build tools included (Even free community edition should work) and run gradle from the visual studio developer command prompt.
Many people faced problems because of file path length limitations on Windows which required some configuration and reducing the root directory paths.
Specifically on the usage of Nmake: NMake is slow and old, and we want to avoid using it. But unfortunately, ninja don't yet support long file paths on windows. Ref. ninja-build/ninja#1900.
MO-Lewis commentedon Jun 9, 2023
Thanks for the reply @mganandraj! You can see the exact Visual Studio modules I have installed on my machine in the original post. If there's anything in there that looks like it's missing / conflicting, it'd be much appreciated if you could let me know!
I tried to use
Visual Studio 2022 Developer Command Prompt v17.6.2earlier on this week, and I believe I was getting a similar build error.However...
I ran it again earlier to double-check the error produced, and it did appear to build with no issues on a boilerplate React project! I'm not sure what I was doing differently earlier this week, perhaps I messed up some environment variables around the same time, but it does appear to work with no issue now!
So this means that building from source on Windows is NOT impossible or broken, but there ARE additional, undocumented requirements.
I would definitely recommend that there should be some extra Windows-specific info in the build from source page, which states that the Windows user must:
Once again, a huge thanks to you both for helping me with this issue over the last few days
MO-Lewis commentedon Jun 12, 2023
Just an update on this from what I found at the end of Friday.
Whilst I was able to get this working on a boilerplate React Native project, I was unable to get it working on our actual client project. React Native versions are the same, other package versions are the same, etc.
Our actual client project is giving me the "x86/cl.exe - broken" error. Really not sure what the error could be in this case.
I'll leave the issue open, as most people who have trouble building for Windows will likely end up seeing this issue (and can hopefully contribute a solution 😅)
joe-sam commentedon Jun 20, 2023
To make all the pieces work together on Windows appear to be switching from ANSI to Unicode API calls - the *A to *W and switched to clang-cl.exe from cl.exe
It may be an exercise worth replicating.
Use *W versions of win32 file functions
#2289
- added: Websocket Module setCustomClientBuilder (#37798)
yogesh6260 commentedon Aug 8, 2023
yarn run v1.22.19
$ npx react-native run-android --variant=experimentalPlayDebug
After running Rocket.Chat.ReactNative [(https://github.com/RocketChat/Rocket.Chat.ReactNative.git)] by cloning the git repo,
Got error - BUILD FAILED due to cmake command is not running, Can, anyone help me to resolve this issue?
I have spent lot of time to build this project but everytime I got this error, please, help me solve out if anyone can.
It is occuring at the time of EXECUTING.....
sebasg0 commentedon Aug 22, 2023
I'm getting same issue in macos M1 chip.
CMake Error at /Library/Android/sdk/cmake/3.22.1/share/cmake-3.22/Modules/CMakeTestCCompiler.cmake:69 (message): The C compilerwoshi82 commentedon Oct 25, 2023
@MO-Lewis

I have met this error too when i set newArcEnable: true.
My project is origin native APP intergrate with react-native .
I use Android studio to compile my project, and met this error
Then , I change to use

Visual Studio 2022 Developer Command Prompt v17.6.2to compile my project, and cmd showed more detail error.It's look like my project or react-native in my project use x86 .conflict with my window11 system x64 ?
But I still finding how to solve the problem. If you know how to resolve the problem, can you let me know. Thank you .
- added: Websocket Module setCustomClientBuilder (react#37798)
lsycxyj commentedon Nov 15, 2024
Workaround: just replace the ninja.exe of android cmake with latest version one.
FleetAdmiralJakob commentedon Jul 13, 2025
HI @mganandraj Ninja now supports long file paths and ninja-build/ninja#1900 is fixed
web-iou commentedon Dec 27, 2025
I encountered the problem of character escape when building with the Developer Command Prompt and found that nmake was unavailable when using bash
YevheniiKotyrlo commentedon Oct 13, 2026
On 0.88.0-rc.5 the only part of an app's build from source that needs Visual Studio on Windows is Hermes:
hermes-enginebuildshermescwith CMake's NMake generator, and inside the developer environment its configure then fails on the backslash-DJSI_DIRpath (the character-escape error reported above, which #59024 fixes).The repository root has linked the published
com.facebook.hermes:hermes-androidby default since #54707, but the npm package's build-from-source root has no such substitution, and How to Build from Source substituteshermes-androidandhermes-enginewith thehermes-engineproject. With the root's substitution added topackages/react-native/build.gradle.ktsand those two substitutions dropped from the docs' block,gradlew assembleDebugof an rc.5 app completes from an ordinary terminal, and every ABI'slibhermesvm.socarries the build ID of the publishedhermes-android-260318099.0.4-debug.aar. Linking the published Hermes also keeps a build from source on the release's Hermes: rc.5 compiles 260318099.0.2 from source while it ships 260318099.0.4 (#59023).Would you take the published Hermes as the build-from-source default, with building Hermes kept as an opt-in? I can send it together with the docs change.