Что означает эта строка? LOCAL_EXPORT_C_INCLUDES - PullRequest
8 голосов
/ 06 июля 2011

Очень простой вопрос, в надежде на очень простой ответ.Я просматривал множество файлов android.mk людей и заметил эту строку.У меня не было документации по ней в моей документации NDK (по крайней мере, find . -name "*.txt" | xargs grep "LOCAL_EXPORT_C_INCLUDES" ничего не придумали).Это была единственная документация, которую я прочитал об этом ... идет над моей головой ...

Часть 2. Правильно ли я полагаю, что мне понадобится эта строка для использования предварительно созданного общего ресурса?библиотека с другим модулем?Спасибо, ребята (и девочки)

III.Экспорт заголовков для готовых библиотек:

Приведенный выше пример назывался «наивным», поскольку на практике код в foo-user.c будет зависеть от конкретных объявлений, которые обычно находятся в заголовочном файле, распространяемом спредустановленная библиотека (например, "foo.h").

Другими словами, foo-user.c будет иметь следующую строку:

include

При сборке модуля foo-user необходимо указать заголовок и путь к нему для компилятора.Простой способ справиться с этим - использовать экспорт в определении готового модуля.Например, предполагая, что файл «foo.h» находится в каталоге «include» относительно встроенного модуля, мы можем написать:

`include $ (CLEAR_VARS)

LOCAL_MODULE:= foo-prebuilt

LOCAL_SRC_FILES: = libfoo.so

LOCAL_EXPORT_C_INCLUDES: = $ (LOCAL_PATH) / include

include $ (PREBUILT_SHARED_LIBRARY *) * 10 * 1026)Определение LOCAL_EXPORT_C_INCLUDES здесь гарантирует, что любой модуль, который зависит от предварительно собранного, будет иметь свой LOCAL_C_INCLUDES, которому автоматически предшествует путь к каталогу включенных встроенных файлов, и, таким образом, сможет находить заголовки внутри этого.

URL:http://www.srombauts.fr/android-ndk-r5b/docs/PREBUILTS.html

1 Ответ

13 голосов
/ 30 августа 2011

Следующее объяснение переменных LOCAL_EXPORT_* в ANDROID-MK.html в папке docs r6 NDK:

LOCAL_EXPORT_CFLAGS
Определите эту переменную для записи набора флагов компилятора C / C ++, которые будут
быть добавленным в определение LOCAL_CFLAGS любого другого модуля, который использует
этот с LOCAL_STATIC_LIBRARIES или LOCAL_SHARED_LIBRARIES.

Например, рассмотрим модуль 'foo' со следующим определением:

   include $(CLEAR_VARS)
   LOCAL_MODULE := foo
   LOCAL_SRC_FILES := foo/foo.c
   LOCAL_EXPORT_CFLAGS := -DFOO=1
   include $(BUILD_STATIC_LIBRARY)

И еще один модуль с именем 'bar', который зависит от него как:

   include $(CLEAR_VARS)
   LOCAL_MODULE := bar
   LOCAL_SRC_FILES := bar.c
   LOCAL_CFLAGS := -DBAR=2
   LOCAL_STATIC_LIBRARIES := foo
   include $(BUILD_SHARED_LIBRARY)

Затем флаги '-DFOO = 1 -DBAR = 2' будут переданы компилятору, когда
здание bar.c

Экспортируемые флаги добавляются к LOCAL_CFLAGS вашего модуля, поэтому вы можете
легко переопределить их. Они также транзитивны: если «зоопарк» зависит от
'bar', который зависит от 'foo', тогда 'zoo' также унаследует все флаги
экспортируется с помощью 'foo'.

Наконец, экспортированные флаги не используются при сборке модуля, который
экспортирует их. В приведенном выше примере -DFOO = 1 не будет передано
компилятор при сборке foo / foo.c.

LOCAL_EXPORT_CPPFLAGS
То же, что LOCAL_EXPORT_CFLAGS, но только для флагов C ++.

LOCAL_EXPORT_C_INCLUDES
То же, что и LOCAL_EXPORT_CFLAGS, но для C включают пути.
Это может быть полезно, если 'bar.c' хочет включить заголовки
которые предоставляются модулем 'foo'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...