Android Studioは、自分のモジュールのメインソースフォルダと異なる場所にある場合、ヘッダファイルを見つけることができません。これは#include "SDL_config.h"ステートメントが赤で強調表示されていることで目立つ(他の#include文は問題ありません)。Gradle Experimental PluginでC/C++インクルードパスを設定するにはどうすればよいですか?
私は以下のcppFlagsの値を変更しようとしましたが、これらのcppFlagsがコンパイラにまったく渡されていないか疑問に思っています。
誰も、この方法でメインのソースフォルダ以外のフォルダからファイルを含むことができましたか?
私はcppFlags、またはおそらくmoduleNameまたはソースを指定した方法に問題がありますか?
私はSDL2ソースを経由してすべての#includeステートメントを相対#includeパスに変更できますが、SDL2ソースを変更する必要はありません。私は単純にインクルードパスのリストを何らかの形で指定できるはずです。
apply plugin: 'com.android.model.application'
model {
...
android.ndk {
moduleName = 'main'
//W:\hello-sdl-android\android-project\app\src\main\jni\SDL2\include
cppFlags += "-I${file("src/main/jni/SDL2/include")}".toString()
cppFlags += "-I${file("src/main/jni/SDL2/src")}".toString()
}
android.sources {
main.jni {
source {
srcDirs += ['src/main/jni/src']
srcDirs += ['src/main/jni/SDL2/src']
}
}
}
...
}
UPDATE:ここに私の現在のプロジェクトのレイアウトについての詳細は:
アプリ/ srcに/メイン/ JNI アプリ/ srcに/メイン/ JNI/SRC/main.cppに< - これは アプリをコンパイルしています/ srcに/メイン/ JNI/SDL2 < - すべてSDL2ソースがアプリ/ srcに/メイン/ JNI/GLM < ここの下にある - すべてのGLMソースがこのレイアウトは、どのプロジェクト例を使用しての直接の結果である、ここで
の下にあります私はここに提供された:https://gitlab.com/scannerdarkly/hello-sdl-android
このプロジェクトは、コマンドラインからndk-buildを使用してビルドされます。私は、Android Studio内でビルドすることでさらにステップを進めたいと考えていました。私のプロジェクトは、GLES2デバイスに三角形を描画しようとします。 ..
cFlags += "-I" + file("src/main/jni/SDL2/include").absolutePath
、これは動作します:
http://www.mediafire.com/download/92577p7vf123l72/hello-sdl-android.zip
おかげで - 私はします数時間でこれを試してみて、それが役立つかどうかを知らせてください。これが答えであれば、私は他の質問を削除します。 – SparkyNZ
まだそれは私のために働いていません。実際には、私は問題を#include "SDL_config.h"をmain.cppファイルに入れようとしましたが、それはうまくいきます。 SDL2のソースをコンパイルしているときに問題が発生しました。だから私は追加の "moduleName"または何らかの形の "sub"モジュール名が必要でしょうか?私は、実際には "moduleName"が実際に何を指しているのか混乱しています。確かに、それは個々の.cppファイルではなく、実行可能ファイルまたはライブラリを意味します。私はまもなくダウンロードリンクを提供します。これを有効にすることは、他の人に有益です。 – SparkyNZ
もう1つ - SDLソースファイルはCファイルです。Main.cppはC++ファイルです。たぶん私の問題は "cppFlags"に加えて "cFlags"を宣言するのと同じくらい簡単ですか? – SparkyNZ