gpt4 book ai didi

gradle - 尝试将依赖任务添加到C插件创建的任务时,为什么会出现错误?

转载 作者:行者123 更新时间:2023-12-03 05:07:17 26 4
gpt4 key购买 nike

我有一个使用C插件生成本地可执行文件的构建脚本。当我尝试添加一个从属任务(一个从Flex输入文件生成一个Flex输出文件的任务)时,出现错误或我的从属任务未执行。我认为正在发生的事情是在模型创建其任务之前评估添加依赖任务的声明。如果真是这样,那么我需要知道如何使从属任务声明更加懒惰(或者向我尚不了解的模型中添加一些内容)。我应该用一个单独的项目来做吗?

我认为这是构建脚本的必要部分。我已注释掉我声明依赖项的尝试。

$ cat build.gradle
apply plugin: 'c'

model {
components {
test(NativeExecutableSpec) {
sources {
c {
source {
srcDir "."
include "*.c"
}
}
}
}
}
}

task compileLang (type: Exec) {
inputs.file(project.file('test.l'))
outputs.file(project.file('lex.test.c'))
commandLine 'flex', '-f', '-L', '-8', '-i', '-P', 'test', 'test.l'
}

//buildDependentsTestExecutable.dependsOn compileLang
//project.task('buildDependentsTestExecutable').dependsOn compileLang
//project.tasks.getByName('buildDependentsTestExecutable').dependsOn compileLang
//tasks['buildDependentsTestExecutable'].dependsOn compileLang

我认为这些是我执行“渐变任务”时配置的相关任务:
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
clean - Deletes the build directory.
installTestExecutable - Installs a development image of executable 'test:executable'
testExecutable - Assembles executable 'test:executable'.

Build Dependents tasks
----------------------
assembleDependentsTest - Assemble dependents of native executable 'test'.
assembleDependentsTestExecutable - Assemble dependents of executable 'test:executable'.
buildDependentsTest - Build dependents of native executable 'test'.
buildDependentsTestExecutable - Build dependents of executable 'test:executable'.

如果某人需要test.c和test.l才能更轻松地回答问题...
$ cat test.c
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]) {
puts("hello, world");
testwrap();
}
$ cat test.l
%s OLC
%%
<INITIAL>-- {
BEGIN(OLC);
}
<OLC>\n\r? {
BEGIN(INITIAL);
}
<OLC>. {
}
%%
int yywrap () {
return 1;
}

我正在使用gradle 5.1.1。

最佳答案

该任务似乎是在Gradle配置阶段的稍后阶段创建的。

我建议在任务容器上添加一个侦听器,它对您的示例非常有用:

project.tasks.whenObjectAdded { Task t -> 
println 'Task added: ' + t.name
if ('buildDependentsTestExecutable'.equals(t.name)) {
t.dependsOn compileLang
}
}

我对'c'插件或model {}配置不熟悉,因此我的建议是基于对Gradle的一般了解。

关于gradle - 尝试将依赖任务添加到C插件创建的任务时,为什么会出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55732834/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com