Как создать Действие компилятора для системы онлайн бронирования

Я хочу создать Действие для автоматизации компиляции GCJ. Так как я не мог заставить его работать с Муравьем, я решил попробовать систему онлайн бронирования. В документах говорится, как создать Действие и как выполнить внешний процесс. То, что я еще не вижу, - то, как снова использовать обход дерева каталогов, который существует для Java и scala Действий компилятора. В этом случае мои входные файлы были бы всеми .class файлами под определенной корневой папкой. Я должен был бы также указать определенный путь к классу для GCJ. Любые указатели для этого ценились бы также.

5
задан Community 23 May 2017 в 10:24
поделиться

1 ответ

Я вообще не использовал GCJ, и я все еще новичок в SBT, но я считаю, что именно так вы могли бы написать быстрое задание на делайте именно то, что вы ищете, с SBT 0.7.1. Вы можете использовать PathFinder , чтобы получить все файлы классов следующим образом:

val allClasses = (outputPath ##) ** "*.class"

Используя этот PathFinder и метод верхнего уровня compileClasspath, вы можете создать задачу, подобную этой, которая будет запускать gcj с использованием текущего путь к классам проекта и объедините все файлы .class в один файл gcjFile:

val gcj = "/usr/local/bin/gcj"
val gcjFile = "target/my_executable.o"

val allClasses = (outputPath ##) ** "*.class"

lazy val gcjCompile = execTask {
  <x>{gcj} --classpath={compileClasspath.get.map(_.absolutePath).mkString(":")}  -c {allClasses.get.map(_.absolutePath).mkString("-c ")} -o {gcjFile}</x>
} dependsOn(compile) describedAs("Create a GCJ executable object")
4
ответ дан 15 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: