ネイティブAPIをNDKによってAndroidにラップしています。
しかし、ビルドするときにヘッダーファイルが見つかりません。
私は次のような構造をしています。
プロジェクト/ jni
Android.mk
LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles)
LOCAL_PATH :=/home/marcos/dev/workspace/rmsdk.native.wraper/jni
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE := ndk1
LOCAL_SRC_FILES := native.c DelegateDRMProcessorClient.cpp
LOCAL_STATIC_LIBRARY := adept cryptopenssl dp expat fonts hobbes jpeg mschema png t3 xml zlib
include $(BUILD_SHARED_LIBRARY)
project/jni/prereqs /
Android.mk(すべてのサブディレクトリAndroid.mkファイルを呼び出すために使用されます)
LOCAL_PATH := $(call my-dir)
include $(call all-subdir-makefiles)
include $(CLEAR_VARS)
project/jni/prereqs /%lib%/
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=dp
LOCAL_SRC_FILES :=libdp.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)
また、各%lib%フォルダーにはincludeフォルダーがあります。
Ndk-buildを使用すると、「/ home/marcos/dev/workspace/rmsdk.native.wraper/jni/DelegateDRMProcessorClient.h:18:20:エラー:dp_all.h:そのようなファイルまたはディレクトリはありません」というメッセージが表示されます。
コンパイラが利用できるようにこれらのヘッダーを含める方法を知っている人はいますか?
私はそれを解決し、フォルダー内のすべてのヘッダーを取得し、Android.mkに次の行を含めます
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include-all
これは機能しますが、最善のアプローチとは思えません。
私はこのパーティーに少し遅れていますが、同じ問題に遭遇し、あなたのコメントに対する答えがあるかもしれません:「これはうまくいきますが、最善のアプローチのようには見えません」
「module-exports」と呼ばれるNDKのサンプルがあります。これは、適切なディレクトリに存在し、すべてが単一のインクルードディレクトリにダンプされるわけではないヘッダーファイルを尊重するAndroid.mkファイルを構築する方法を示しています。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_SRC_FILES := foo/foo.c
LOCAL_CFLAGS := -DFOO=2
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/foo
LOCAL_EXPORT_CFLAGS := -DFOO=1
LOCAL_EXPORT_LDLIBS := -llog
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := bar
LOCAL_SRC_FILES := bar/bar.c
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/bar
LOCAL_STATIC_LIBRARIES := foo
include $(BUILD_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := Zoo
LOCAL_SRC_FILES := Zoo/zoo.c
LOCAL_SHARED_LIBRARIES := bar
include $(BUILD_SHARED_LIBRARY)
数年後...
個々のファイルの代わりにインクルードディレクトリをエクスポートするには、次を使用します。
LOCAL_EXPORT_C_INCLUDE_DIRS := $(MY_DIRECTORY_PATH)
たとえば、上記の質問の場合、「foo」のエクスポートは次のようになります。
LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)/foo
新しい人の便宜のために、すべてのヘッダーファイルをLOCAL_C_INCLUDES:= $(LOCAL_PATH)で参照されるフォルダーに移動し、Android.mkを保存してEclipseを再起動することを追加したいと思います。上記のすべての解決策を試した後、それは私のために働いた。