我在Qt之上设置了一个项目(因此源代码是用C ++编写的),我想尝试使用Gradle进行自动构建。我花了一些时间来了解配置多项目构建的细节(有一个可执行文件和两个库),现在我试图告诉cpp-exe
和cpp-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用户指南之外,也会有所帮助。
答案 0 :(得分:9)
查看Gradle Adam Murdoch's usage的'cpp plugin'。我相信他是主要的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'插件构建可执行文件的示例。