Deseo crear una Acción para automatizar la compilación de GCJ. Desde I couldn't make it work with Ant, decidí probar SBT. Los documentos dicen cómo crear una Acción y cómo ejecutar un proceso externo. Lo que aún no veo es cómo reutilizar el recorrido del árbol de directorios que existe para las acciones del compilador de java y scala. En este caso, mis archivos de entrada serían todos los archivos .class en una determinada carpeta raíz. También necesitaría especificar un classpath específico para GCJ. Cualquier sugerencia para esto sería apreciada también.Cómo crear un compilador Acción para SBT
5
A
Respuesta
4
No he usado mucho GCJ y sigo siendo bastante nuevo en SBT, pero así es como creo que podría escribir una tarea rápida para hacer exactamente lo que está buscando con SBT 0.7.1. Puede utilizar un PathFinder para agarrar todos los archivos de clase de este modo:
val allClasses = (outputPath ##) ** "*.class"
Usando esa Pathfinder y el "compileClasspath" método de nivel superior, se puede construir una tarea como esta que se desarrollará gcj utilizando la ruta de clase del proyecto actual y componer todos los archivos .class en un archivo gcj:
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")
Cuestiones relacionadas
- 1. Cómo crear una acción para un UITabBarItem?
- 2. Scala SBT: Scala versión del compilador
- 3. Cómo puedo crear un MethodInfo desde un delegado de Acción
- 4. cómo comenzar con SBT para la elevación
- 5. Creando un proyecto Vaadin-sbt
- 6. Plugin Sbt para jruby
- 7. ¿Cómo puedo crear un delegado de acción desde MethodInfo?
- 8. Cómo establecer el proyecto predeterminado para SBT
- 9. Cómo hacer un compilador paralelo para .NET
- 10. ¿Cómo configurar un repositorio proxy local para SBT?
- 11. Crear un enlace de acción en un controlador
- 12. SBT cómo ejecutar InputTask
- 13. Prueba RSpec para crear la acción de un controlador para un recurso anidado
- 14. Configuración de acciones para varias carpetas de prueba en SBT
- 15. Hacer un compilador JIT
- 16. Crear secuencia de comandos con classpath desde SBT
- 17. ¿Cómo se puede anexar una opción del compilador Scala a scalacOptions en sbt?
- 18. Cómo crear un nuevo hilo para ejecutar una acción <T>
- 19. ScalacOptions condicional con SBT
- 20. Uso de CoreText y toques para crear una acción seleccionable
- 21. Configuración de la aplicación Play 2.0 con IDEA y SBT
- 22. Crear una nueva acción para el controlador existente
- 23. ¿Cómo construir un archivo war simple con sbt?
- 24. ¿Cómo ejecutar un proyecto de aplicación administrado por sbt sin sbt?
- 25. Scala SBT: jar independiente
- 26. instalando sbt-assembly con sbt 0.11.2
- 27. Crear acción lambda de expresión de función
- 28. ¿Cómo cambio los colores sbt?
- 29. sbt para excluir el directorio de origen
- 30. SBT: Dependencia en otro proyecto SBT sin publicación
Voy a intentar esto ... una pregunta más, ¿esto es conseguir el classpath definido para la compilación scala? Me gustaría usar uno específico para gcj. –
Esto utiliza el classpath definido para la compilación de Scala. Si desea utilizar uno diferente, puede codificarlo o puede colocar todos los JAR en un directorio determinado y usar un PathFinder para obtenerlos todos. – Aaron
Excelente. Necesitaba importar Process._ para que funcione la conversión xml, y modifiqué un poco más. La respuesta fue de gran ayuda, gracias. –