Нераспознанное свойство «cflags» для модуля cc_prebuilt_library_shared

Я пишу 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 для этого модуля?

Попробуйте поместить их в блок cc_defaults {}.

rekire 25.06.2019 08:32

@rekire Уже пробовал. Не работает.

TheLittleNaruto 25.06.2019 08:41
4
2
1 065
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это может показаться неуместным; но исправление устанавливало 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

TheLittleNaruto 10.07.2019 18:25

Другие вопросы по теме