c++ - 在 gradle 中配置 cpp 源

标签 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 插件使用哪些源文件。如果除了其 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/

相关文章:

c++ - 这两种在 C++ 中实现函数的方法有什么区别?

continuous-integration - 为什么 Gallio 似乎需要在名为 GallioBundle-3.1.397.0/bin 的文件夹中才能运行

android-studio - 如何将googlesource项目导入Android Studio?

android - 使用 gradle 添加支持库 v7、v13 不起作用

gradle - Gradle如何找到一个setings.gradle文件

c++ - 为什么不能将 *pointer+offset 用作左值? ("error: non-lvalue in assignment")

c++ - 通过循环展开和阻塞进行优化

c++ - 如何创建指向另一个列表中对象的指针列表?

build-automation - 通过命令行构建 Visual Studio 部署项目 (.vdproj)

continuous-integration - 作为持续构建的一部分,使用 gpg 对 RPM 进行签名 - 如何避免提示输入密码?