用gradle构建c程序

时间:2015-03-18 22:41:53

标签: c gradle

我刚开始在gradle中构建c / cpp插件。这是项目结构

.
|-- build.gradle
`-- src
    `-- main
        `-- c
            `-- hello.c

hello.c的内容

#include <stdio.h>

int main(int argc, char** argv){
    printf("Hello World!\n");
    return 0;
}

build.gradle的内容

apply plugin: 'c'

executables {
    main {
    }
}

当我运行:$ gradle mE时,我收到以下错误

FAILURE: Build failed with an exception.

* Where:
Build file '/home/sujith/Downloads/cpp-examples-master/gradle-c-plugin/03-executable/build.gradle' line: 3

* What went wrong:
A problem occurred evaluating root project '03-executable'.
> Could not find method executables() for arguments [build_aaxd7x5nukew1jgziyan9q177$_run_closure1@57552dfc] on root project '03-executable'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 2.297 secs

取自https://github.com/ysoftdevs/cpp-examples

的示例项目

Gradle版本:

$ gradle -version

------------------------------------------------------------
Gradle 2.3
------------------------------------------------------------

Build time:   2015-02-16 05:09:33 UTC
Build number: none
Revision:     586be72bf6e3df1ee7676d1f2a3afd9157341274

Groovy:       2.3.9
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.7.0_67 (Oracle Corporation 24.65-b04)
OS:           Linux 3.13.0-24-generic amd64

我错过了什么吗? 任何帮助表示赞赏。谢谢

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,即使用executables { ... }不起作用并抛出与您提到的相同的错误。可能它在旧版本的gradle中使用。

我引用了gradle docs来构建原生二进制文件。

我在build.gradle中使用了此代码:

apply plugin: 'c'

model {
  components {
    main(NativeExecutableSpec) {}
  }
}

你的代码应该可以正常使用。

在此之后,您可以执行gradle tasks以了解可以执行的任务。

您可以运行gradle build并将您的可执行文件作为build/binaries/mainExecutable/main运行。

很抱歉,这个答案非常具体针对您的要求而我可能无法帮助您进行概括,因为我仍然在学习如何使其适应我的C项目。

希望这会对你有所帮助。

编辑:您还可以查看提供here的这个惊人示例。以此为基础,您可以增强和改进build.gradle文件。但是这里的一个小问题是它使用了executables {...}libraries {...}等等,它们可能已被弃用,但它仍然是一个很好的阅读。