7

我已经在 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”。该插件的文档告诉我可以自定义源位置,但不能自定义。

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

4

1 回答 1

9

看看Adam Murdoch对 Gradle 的“cpp 插件”的使用。我相信他是主要的 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

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

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

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

于 2012-11-27T00:53:46.387 回答