Gradle:如何将各种文件集合传递给任务?

时间:2018-06-21 23:03:45

标签: c gradle native

因为Gradle基于Java之类的目录结构来编译C / C ++代码,所以我需要构建一组选择文件组的资源外生成目录,以构建不同的产品。除了为每个产品和每个列表构造一个副本之外,还有没有办法将列表和参数传递给任务?

apply plugin: 'c'

buildDir = new File(rootProject.projectDir, '/build/assembly')

FileCollection listA = files(
                'dir1/A',
                'dir1/B',
                'dir2/C')

FileCollection listB = files(
                'dir1/M',
                'dir2/N',
                'dir4/Q')

FileCollection listC = files(
                'dir1/X',
                'dir2/Y',
                'dir4/Z')

task product1() {
    task prep(listA, P1)
    task prep(listB, P1)
}

task product2() {
    task prep(list, P2)
    task prep(list, P2)
}

task setup() {
    task prep(listA)
    task prep(listB)
}

task prep (type: Copy, List: alist) {
    alist.each { File file ->
        println "Copying into -> " + file.name
        from "${projectDir}/file.name"
        into "${buildDir}/file.name"
    }
}

model {
[...]
}

理想情况下,使用gcc,用户将列出要构建/链接的文件以及输出应到达的位置。
例如

 gcc -c -o /home/build/prod1/A.o /home/tree/prod/dir1/A.c
 gcc -c -o /home/build/prod1/B.o /home/tree/prod/dir1/B.c
 [...]
 gcc -o /home/tree/build/prod1/prod1.so /home/build/prod1/A.o /home/build/prod1/B.o ...

使用Gradle,我似乎不得不为每种产品创建构建目录,仅复制要构建的文件,然后查找* .o文件并将其复制到另一个链接位置。还是我不正确地将Gradle用于本机构建?

0 个答案:

没有答案