2016-10-25 4 views
1

私はGradleの初心者です。私はプロジェクトディレクトリ全体に分散されたヘッダーを含むソースファイルのセットをコンパイルしようとしています。私のソースディレクトリ構造は、Gradle規約に準拠していません。コンパイルに必要なヘッダーの場所をbuild.gradleにどのように追加するのですか?添付ファイルはbuild.gradleです。CコンパイルのヘッダをGradleに含めるには?

// build.gradle 

apply plugin: 'c' 

model { 
    components { 
     my_project (NativeExecutableSpec){ 
      sources { 
       c { 
        source { 
         srcDir "my_proj_src/a/a1.1" 
         include "**/*.c" 
        } 
        exportedHeaders { 
         srcDir "my_proj_src/a/a1.1", "fsw/b/b1.2" 
        } 
       } 
      } 
     } 
    } 
} 

これは機能しません。さらに、Gradleを使用して部分的なリンクを行う可能性はありますか?

EDIT:さらに、ソース階層内のヘッダーに対してGradle検索を再帰的に行う方法も知りたいと思います。

答えて

2

exportedHeaders`は、ヘッダーを追加するのではなく、コンポーネント自体からヘッダーをエクスポートするためのものです。これはうまくいかないでしょう。

model { 
    repositories { 
     libs(PrebuiltLibraries) { 
      ffmpegHeaders { 
       headers.srcDirs "$ffmpegDir/include" 
      } 
     } 
    } 

    components { 
     libUsingHeaders(NativeLibrarySpec) { 
      sources { 
       c { 
        lib library: 'ffmpegHeaders', linkage: 'api' 
       } 
      } 
     } 
    } 
} 
+0

ありがとう:

あなたはライブラリを作成し、これらのヘッダは、あなたのコンポーネントがに対してコンパイルされたヘッダに追加されるようにapi linkageとして追加する必要があります。私は今、コンセプトを取得しています。さらに、ヘッダーのためにGradle検索を再帰的に行うことが可能かどうかを知りたい。はいの場合、どうですか? –

+1

AFAIKは自動的に動作します。ヘッダのルートフォルダを定義するだけで、gradleはそれを適切なコンパイラに渡します。コンパイラは通常、そのようなディレクトリ内で再帰的に検索します。 "build/tmp/compileYourLibrary/options.txt"ファイルを見ることをお勧めします。これは、ヘッダファイルの引数を含め、コンパイラに正確に渡されるものです。 – Crazyjavahacking

+0

このapiリンケージはアセンブラソースセットでも機能しますか? –

関連する問題