Android Studio构建Google Filament仓库报CMake找不到源文件错误
构建Google Filament时提示找不到uberarchive.h的解决方案
问题描述
新手构建Filament仓库时,每次执行构建操作都会触发CMake错误,核心报错信息如下:
CMake Error at /Users/tomas/AndroidStudioProjects/06.Filament/android/gltfio-android/CMakeLists.txt:109 (add_library): Cannot find source file: /Users/tomas/AndroidStudioProjects/06.Filament/out/android-release/filament/include/gltfio/materials/uberarchive.h Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm .h .hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .hip .ispc
问题根因
uberarchive.h不是仓库里预置的静态源码文件,是构建流程中通过材质编译工具自动生成的产物。直接跳转到Android模块单独构建时,会跳过前置的工具编译、材质生成步骤,CMake自然找不到对应头文件。
解决步骤
- 先确认仓库依赖拉取完整,在Filament仓库根目录执行以下命令,拉取所有子模块(漏拉子模块后续所有构建步骤都会出问题):
git submodule update --init --recursive - 别直接用Android Studio导入android目录就点构建按钮,AS默认不会执行Filament要求的前置构建任务,必须先走官方提供的构建脚本:
- 先构建桌面端release版本,生成材质编译需要的matc等工具链:
./build.sh -p desktop release - 等桌面端构建跑完,再执行Android端release构建,脚本会自动跑完材质编译、头文件生成的全流程,不会再报找不到文件的错:
./build.sh -p android release
- 先构建桌面端release版本,生成材质编译需要的matc等工具链:
- 如果走完上面两步还是报同样的错,手动触发材质生成的构建目标就行:
进入构建输出目录out/android-release,执行命令单独编译gltfio材质模块:cmake --build . --target gltfio_materials
命令执行完成后,uberarchive.h就会生成到报错提示的对应路径,此时再重新执行Android构建就能正常通过。
注意避坑
- Filament全量构建要预留至少20G空闲磁盘空间,空间不够的时候材质生成步骤会静默失败,一样会报头文件找不到
- Windows环境下必须用WSL2执行构建脚本,原生CMD/PowerShell有路径兼容问题,会导致文件生成路径不对
- 别想着跳过桌面端构建直接编Android版本,Android构建流程依赖桌面端产出的编译工具,跳过必错
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

