【发布时间】:2015-05-11 17:03:58
【问题描述】:
这是我第一次尝试使用Gradle's C plugin 构建的 C 程序:
apply plugin: 'c'
model {
components {
derpus(NativeExecutableSpec) {
sources {
c(CSourceSet) {
source {
srcDir "src/derpus/c"
include "**/*.c"
}
exportedHeaders {
srcDir "src/derpus/headers"
}
}
}
}
}
}
这会生成一个名为derpus.exe 的可执行文件。如果可能的话,我想version 这些可执行文件(derpus-1.0.0.exe、derpus-1.0.1.exe 等)。当我将 derpus 闭包更改为 derpus-1.0.0 时,如下所示:
derpus-1.0.0(NativeExecutableSpec) {
然后运行gradle clean build 我得到:
D:\workspace\derp\20150505\derpus>gradlew clean build
FAILURE: Build failed with an exception.
* Where:
Build file 'D:\derpus\build.gradle' line: 6
* What went wrong:
Could not compile build file 'D:\derpus\build.gradle'.
> startup failed:
build file 'D:\derpus\build.gradle': 6: unexpected tok
en: 0 @ line 6, column 20.
derpus-1.0.0(NativeExecutableSpec) {
^
1 error
有人知道对这些可执行文件进行版本控制的方法吗?
更新
现在这真的很奇怪!听从 Amnon 的建议,我添加了一个定义 version=1.0.0 的 gradle.properties 文件。然后我将model 闭包修改为:
model {
components {
derpus(NativeExecutableSpec) {
sources {
c(CSourceSet) {
source {
srcDir "src/derpus/c"
include "**/*.c"
}
exportedHeaders {
srcDir "src/derpus/headers"
}
}
}
baseName = "derpus-${version}"
}
}
}
这会生成一个名为 derpus-1 的可执行文件(什么?!?!)!
然后我又修改了model:
version = "3.4"
model {
components {
derpus(NativeExecutableSpec) {
sources {
c(CSourceSet) {
source {
srcDir "src/derpus/c"
include "**/*.c"
}
exportedHeaders {
srcDir "src/derpus/headers"
}
}
}
baseName = "derpus-${version}"
}
}
}
如您所见,这应该覆盖gradle.properties 中设置的版本,但是在运行gradle clean build 之后,它会生成derpus-3!
所以我又修改了model:
model {
components {
derpus(NativeExecutableSpec) {
sources {
c(CSourceSet) {
source {
srcDir "src/derpus/c"
include "**/*.c"
}
exportedHeaders {
srcDir "src/derpus/headers"
}
}
}
baseName = "derpus-3.4.5"
}
}
}
这会产生derpus-3.4!!! 这是怎么回事?!? C 插件中是否存在不支持完整的version 变量的错误?
【问题讨论】:
标签: java c gradle versioning