在gradle中配置cpp源

Configuring cpp sources in gradle

本文关键字:cpp 配置 gradle      更新时间:2023-10-16

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

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

看看Adam Murdoch对Gradle的"cpp插件"的使用。我相信他是Gradle的主要提交者之一,所以他应该比任何人都更清楚如何使用这个:

从本地平台/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

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

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

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