我已经在 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
插件使用哪些源文件。如果除了其 API 文档和 Gradle 用户指南之外还有关于 cpp
插件的任何文档,那也会有所帮助。
最佳答案
看看Adam Murdoch's usage Gradle 的 '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
我自己没有花太长时间查看它,但看起来他定义了许多基于操作系统架构的源代码包括组合并将它们存储在 variants 变量中。然后他将它们处理成平台 JAR(我还没有实际运行构建,也许我应该)。
另外,看看 https://github.com/rklaren/GradleJNI , 它使用 cpp plugin但看起来有点面向 Windows。
更新 - 我也找到了https://github.com/alkemist/gradle-cpp-demo ,其中包含构建可执行文件的“cpp-exe”插件示例。
关于c++ - 在 gradle 中配置 cpp 源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11427262/