Подтвердить что ты не робот

Android NDK: как позволить gcc использовать дополнительные каталоги

Простой вопрос (я использую android NDK r6 с cygwin, но это вопрос о make файлах и gcc). Предположим, что я поставил под jni/каталог библиотеку под dir mylib_v_1/. Mylib структурирован как:

mylib_v_1
   mylib
      include

В каталоге include есть два файла: myinc1.hpp и myinc2.hpp. В myinc1.hpp есть строка как:

#include <mylib/myinc2.hpp>

в моем .cpp файле, в каталоге jni/, существует следующая строка:

#include <mylib/myinc1.hpp>

Я хочу настроить Android.mk(или какие другие файлы нужно настроить), чтобы gcc мог знать, как использовать дополнительную директорию, jni/mylib_v_1/, чтобы использовать #include с скобками ( вместо двух файлов, в моем реальном случае есть много .hpp, которое включает в себя множество других .hpp с записью скобок).

Как я могу это сделать?

спасибо.

Ps. Если в файле .cpp я изменяю include таким образом:

#include "mylib/myinc1.hpp"

gcc найти myinc1.hpp, но при его обработке он найдет второе:

#include  <mylib/myinc2.hpp>

и остановитесь там, говоря, что он не может найти файл myinc2.hpp.

4b9b3361

Ответ 1

Вариант 1:

Добавьте один из следующих строк в ваш Android.mk внутри модуля по вашему выбору:

   LOCAL_C_INCLUDES := /path/to/your/includes # ignore previous includes
                                              # OR
   LOCAL_C_INCLUDES += /path/to/your/includes # preserve previous includes

При необходимости вы можете создать переменную окружения, указывающую на "/path/to/your/includes" и включить ее следующим образом:

   LOCAL_C_INCLUDES := $(MYLIB_INCLUDES_PATH) # ignore previous includes
                                              # OR
   LOCAL_C_INCLUDES += $(MYLIB_INCLUDES_PATH) # preserve previous includes

Вариант 2:

  • Скопируйте полную папку со всеми заголовочными файлами в ней (mylib) в папку "jni" вашего проекта.

  • Добавьте в свой Android.mk следующую строку в модуле по вашему выбору:

    LOCAL_C_INCLUDES := $(LOCAL_PATH)/mylib
    

    или

    LOCAL_C_INCLUDES += $(LOCAL_PATH)/mylib
    

В зависимости от того, включены ли предыдущие или нет.

Вариант 3:

Установите плагин CDT для Eclipse и добавьте абсолютный путь в каталог "mylib" к путям включения вашего проекта. Вот отличный учебник, в котором показаны все необходимые шаги.

http://mhandroid.wordpress.com/2011/01/23/using-eclipse-for-android-cc-development/

Ответ 2

Вы можете добавить C include paths в Android.mk, используя:

common_CFLAGS := -Ijni/mylib/include

Для любых дополнительных путей требуется другая опция -I.