Android NDK使用CMake编译OBJECT库引发的错误(produces multiple outputs)
在使用CMake进行构建的时候,CMakeLists配置如下OBJECT库,并指定最小版本为3.14
cmake_minimum_required(VERSION 3.14)
# ogg库
add_library(aiengine_ogg OBJECT
third/ogg/bitwise.c
third/ogg/framing.c
)
不指定构建的ABI,即编译4个系统平台,x86,x86_64,arm64-v8a,armeabi-v7a
指定CMake版本为3.18.1,即模块级Gradle内,android.externalNativeBuild.cmake配置
externalNativeBuild {
cmake {
path file('../../CMakeLists.txt')
version "3.18.1"
}
}
NDK使用默认版本21.4.7075529
会发生如下错误
E:\Git\sdk_2.x\CMakeLists.txt : C/C++ debug|x86 : Target aiengine_ogg::@6890427a1f51a3e7e1df produces multiple outputs E:\Git\sdk_2.x\AndroidDebugProject\app\.cxx\cmake\debug\x86\CMakeFiles\aiengine_ogg.dir\third\ogg\bitwise.c.o, E:\Git\sdk_2.x\AndroidDebugProject\app\.cxx\cmake\debug\x86\CMakeFiles\aiengine_ogg.dir\third\ogg\framing.c.o
如果修改为只编译指定的1个ABI,则可以构建成功
尝试更换过NDK,Ninja版本,CMake版本更新为最新3.20也都无法解决这个问题
最后更换了CMake版本为3.14.0的版本,问题解决,尝试了3.14.7以下的版本都是可以的,3.15.0以上就会报这个错误
虽然问题解决了,但是具体发生该错误的原因还不清楚,如果有知道的还望告知,谢谢