构建Flutter应用时如何解决CMake [CXX1405]错误?
Flutter构建pdfrx库时CMake错误解决方案
错误详情
FAILURE: Build failed with an exception. * 出错原因: 任务 ':pdfrx:configureCMakeRelWithDebInfo[arm64-v8a]' 执行失败。 > 使用C:\Users\Miraj Hossain\AppData\Local\Pub\Cache\hosted\pub.dev\pdfrx-0.4.8\android\CMakeLists.txt通过cmake构建时出现[CXX1405]错误:构建命令执行失败。 执行进程C:\Users\Miraj Hossain\AppData\Local\Android\sdk\cmake\3.18.1\bin\cmake.exe并携带参数{-HC:\Users\Miraj Hossain\AppData\Local\Pub\Cache\hosted\pub.dev\pdfrx-0.4.8\android -DCMAKE_SYSTEM_NAME=Android -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_SYSTEM_VERSION=19 -DANDROID_PLATFORM=android-19 -DANDROID_ABI=arm64-v8a -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -DANDROID_NDK=C:\Users\Miraj Hossain\AppData\Local\Android\sdk\ndk\21.4.7075529 -DCMAKE_ANDROID_NDK=C:\Users\Miraj Hossain\AppData\Local\Android\sdk\ndk\21.4.7075529 -DCMAKE_TOOLCHAIN_FILE=C:\Users\Miraj Hossain\AppData\Local\Android\sdk\ndk\21.4.7075529\build\cmake\android.toolchain.cmake -DCMAKE_MAKE_PROGRAM=C:\Users\Miraj Hossain\AppData\Local\Android\sdk\cmake\3.18.1\bin\ninja.exe -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=E:\Flutter_Projects\hospital_booking_system\build\pdfrx\intermediates\cxx\RelWithDebInfo\i4455492\obj\arm64-v8a -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=E:\Flutter_Projects\hospital_booking_system\build\pdfrx\intermediates\cxx\RelWithDebInfo\i4455492\obj\arm64-v8a -DCMAKE_BUILD_TYPE=RelWithDebInfo -BC:\Users\Miraj Hossain\AppData\Local\Pub\Cache\hosted\pub.dev\pdfrx-0.4.8\android\.cxx\RelWithDebInfo\i4455492\arm64-v8a -GNinja}时出错 -- 检测CXX编译器ABI信息 -- 检测CXX编译器ABI信息 - 完成 -- 检查可用的CXX编译器: C:/Users/Miraj Hossain/AppData/Local/Android/Sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe - 跳过 -- 检测CXX编译特性 -- 检测CXX编译特性 - 完成 -- 配置未完成,发生错误! 另请参阅"C:/Users/Miraj Hossain/AppData/Local/Pub/Cache/hosted/pub.dev/pdfrx-0.4.8/android/.cxx/RelWithDebInfo/i4455492/arm64-v8a/CMakeFiles/CMakeOutput.log"。 CMake错误位于CMakeLists.txt:62 (file): file 无法创建链接'C:/Users/Miraj Hossain/AppData/Local/Pub/Cache/hosted/pub.dev/pdfrx-0.4.8/android/.lib/latest',因为现有路径无法移除: 无错误 CMake警告(dev)位于CMakeLists.txt:66 (set): 无法设置"pdfrx_bundled_libraries": 当前作用域无父级。 此警告面向项目开发者。使用-Wno-dev可抑制该警告。 * 尝试方案: > 使用--stacktrace选项获取堆栈跟踪。 > 使用--info或--debug选项获取更多日志输出。 > 使用--scan选项获取完整分析信息。 * 获取更多帮助请访问https://help.gradle.org
解决步骤
清理缓存与构建产物
执行以下命令重置依赖与构建状态:flutter pub cache clean flutter clean flutter pub get解决路径空格问题
错误根源是用户名包含空格,导致CMake无法正确处理路径:- 临时解决:以管理员身份运行终端,重新执行构建;
- 永久解决:将Flutter项目、Android SDK、NDK迁移到无空格的目录下。
升级pdfrx库版本
0.4.8版本可能存在CMake脚本兼容性问题,升级到最新稳定版:
修改pubspec.yaml中的依赖:pdfrx: ^<最新版本号> # 替换为实际最新版本执行
flutter pub get更新依赖。检查CMake与NDK兼容性
- 在Android Studio的SDK Manager中升级CMake到3.22及以上版本;
- 若使用NDK 21.x仍有问题,切换到NDK 23.x版本尝试。
内容的提问来源于stack exchange,提问作者Miraj Hossain Shawon
相关产品推荐
相关产品推荐

