Компиляция связанных (не скопированных) файлов с использованием NDK - PullRequest
2 голосов
/ 16 марта 2012

Я создаю приложение на основе OpenGL - пишу на родном C / C ++.

Я хочу, чтобы мои собственные файлы находились в одном месте и были связаны только с проектом (поэтому, когда я редактирую их в XCode / Eclipse, другой проект уже имеет обновленные файлы).Однако я не могу понять, как заставить ndk-build создавать файлы, которые на самом деле не находятся в папке JNI.Символические ссылки (в OSX) не помогли.

Я продолжаю получать

make: *** No rule to make target `/Developer/SDKs/android-ndk-r7b/build/core/myfile.cpp', needed by `obj/local/armeabi/objs/glHelloArrow/myfile.o'.  Stop.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Я строю вне папки JNI в Windows. Мой Android.mk содержит make-файл в другой папке:

LOCAL_PATH := $(MY_WORKSPACE)/path/jni
include  $(MY_WORKSPACE)/path/jni/Src.mk

где указаны фактические источники:

LOCAL_SRC_FILES := \
    a.cpp \
    b.cpp \
    etc.

Одно предостережение - make не работает правильно с относительными путями. Вернее, это так, но предполагается, что путь будет относительно текущей папки, что в случае процесса ndk-build может быть повсюду. Таким образом, переменная env, обозначающая корень расположения файла.

Некоторые подробности здесь .

0 голосов
/ 16 марта 2012

У меня похожая проблема с кроссплатформенной кодовой базой.Я не нашел никакого способа сделать это.

Мой обходной путь - создать символическую ссылку из моего корневого каталога исходного кода в jni, чтобы я мог указать системные пути сборки NDK, например jni/link/common/foo.c.

Просто убедитесь, что вы удалили символическую ссылку, если вам когда-нибудь понадобится запустить инструменты, которые выполняют рекурсивный обход каталога ...

...