在gradle中配置cpp源

时间:2012-07-11 07:03:27

标签: c++ build-automation gradle

我在Qt之上设置了一个项目(因此源代码是用C ++编写的),我想尝试使用Gradle进行自动构建。我花了一些时间来了解配置多项目构建的细节(有一个可执行文件和两个库),现在我试图告诉cpp-execpp-lib插件我的源代码树结构化。

我已经设置了一个应该打印所有源集的任务(至少应该有默认值?),它看起来像这样:

task projectinfo {
description = "Informations about the current project"
group = INFORMATIONS_GROUP

doFirst {
    task -> print ("""${task.project.sourceSets.all}""")
}

如果我运行此任务,Gradle会告诉我该项目没有属性“sourceSets”。 The documentation of the plugin告诉我可以自定义源位置,但不能自定义源位置。

所以我的问题是:如何告诉Gradle cpp插件使用哪些源文件。如果有任何关于cpp插件的文档,除了其API文档和Gradle用户指南之外,也会有所帮助。

1 个答案:

答案 0 :(得分:9)

查看Gradle Adam Murdoch's usage'cpp plugin'。我相信他是主要的Gradle提交者之一,所以他应该知道如何比任何人更好地使用它:

native-platform/build.gradle

发出
cpp {
    sourceSets {
        main {
            source.exclude 'curses.cpp'
        }
        curses {
            source.srcDirs = ['src/main/cpp']
            source.include 'curses.cpp'
            source.include 'generic.cpp'
            source.include 'generic_posix.cpp'
        }
    }
}

Then, within the 'libraries' node, refer to all/any combination of architecture and source sets:

sourceSets << cpp.sourceSets.main
sourceSets << cpp.sourceSets.curses

我自己没有太长时间来查看它,但看起来他定义了许多基于OS体系结构的源代码包含组合并将它们存储在 variants 变量中。然后他将它们处理成平台JAR(我还没有实际运行构建,也许我应该)。

另外,看看https://github.com/rklaren/GradleJNI,它使用cpp plugin,但看起来有点面向Windows。

更新 - 我还找到了https://github.com/alkemist/gradle-cpp-demo,其中有一个'cpp-exe'插件构建可执行文件的示例。