如何在Gradle中包含C编译的头文件?

时间:2016-10-25 06:08:46

标签: gradle build.gradle

我是Gradle的新手。我正在尝试编译一组源文件,其中包含分布在项目目录中的标头。我的源目录结构不符合Gradle约定。如何在build.gradle中添加编译所需的标头位置?这里附有我的build.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进行部分链接?

编辑:此外,我还想知道如何递归地为源层次结构中的标题进行Gradle搜索。

1 个答案:

答案 0 :(得分:2)

exportedHeaders`用于从组件本身导出标头,而不是用于添加标头。所以这不起作用。

您需要创建一个库并将其添加为api linkage ,以便将这些标头添加到您的组件编译的标头中:

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

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