我還沒有使用GCJ,我在SBT上還是很新的,但這是我相信你可以寫一個快速的任務來完成你正在用SBT 0.7.1來查找的內容。您可以使用PathFinder抓住所有的類文件,像這樣:
val allClasses = (outputPath ##) ** "*.class"
使用路徑查找器和「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")
我會試試這個...還有一個問題,這是獲取爲scala編譯定義的類路徑嗎?我想用一個特定的gcj。 – 2010-03-11 15:49:59
這確實使用爲Scala編譯定義的類路徑。如果你想使用一個不同的代碼,那麼你可以對它進行硬編碼,或者你可以把所有的JAR放到一個特定的目錄中,然後使用路徑查找器將其全部拉入。 – Aaron 2010-03-11 16:15:56
太好了。我需要導入Process._以便xml轉換工作,並且我調整了一些。答案很有幫助,謝謝。 – 2010-03-12 01:07:14