Я пишу Android.bp файл для одной из библиотек предварительной сборки. В Android.mk можно было добавить CFlags для встроенной библиотеки; однако то же самое не работает в случае чертежа, т.е. Android.bp. Фрагмент того, что я делаю, приведен ниже:
cc_prebuilt_library_shared {
name: "samplelib",
vendor_available:true,
cflags: [
"-Wall",
"-Wextra",
"-Werror",
],
tags: [
"optional",
"eng",
"debug",
],
target: {
android_x86:{
srcs: ["bin/x86/samplelib.so"],
compile_multilib: "32",
relative_install_path: "lib",
},
android_x86_64:{
srcs: ["bin/x86_64/samplelib.so"],
compile_multilib: "64",
relative_install_path: "lib64",
},
},
}
Однако я получаю следующую ошибку:
/Android.bp:5:11: unrecognized property "cflags"
Итак, если я правильно понимаю, cflags нельзя использовать с модулем cc_prebuilt_library_shared; если это так, то как мы можем включить CFlags для этого модуля?
@rekire Уже пробовал. Не работает.
Это может показаться неуместным; но исправление устанавливало LOCAL_STRIP_MODULE значение None и удаляло cflags из файла Android.bp. Таким образом, рабочий фрагмент выглядит так:
cc_prebuilt_library_shared {
name: "samplelib",
vendor_available:true,
tags: [
"optional",
"eng",
"debug",
],
target: {
android_x86:{
srcs: ["bin/x86/samplelib.so"],
compile_multilib: "32",
relative_install_path: "lib",
},
android_x86_64:{
srcs: ["bin/x86_64/samplelib.so"],
compile_multilib: "64",
relative_install_path: "lib64",
},
},
strip: {
none:true,
},
}
Обратите внимание на атрибут "strip", для которого установлено значение none, а cflags также удален.
Примечание. Атрибут "strip" — это версия схемы LOCAL_STRIP_MODULE make-файла.
Наличие cflags для готовых двоичных файлов не имеет особого смысла. Они предоставляются компилятору при построении файлов C/C++. Поскольку ваши библиотеки уже созданы, они вам не нужны.
Согласен! Узнал об этом позже; но даже после их удаления; Это не работает. Я разместил решение здесь: stackoverflow.com/a/56754629/1944896
Попробуйте поместить их в блок
cc_defaults {}.