2012-05-16 9 views
7

Sto cercando di compilare un (Scala) macro in Eclipse 3.7.2 con il plugin Scala IDE disponibile per Scala 2.10.0-M3, ma sto vivendo il seguente errore:ScalaMacros e Eclipse

"macro implementazione non trovata: XXXXX (il motivo più comune è che non è possibile utilizzare le implementazioni di macro nella stessa esecuzione di compilazione che li definisce) se è necessario definire le implementazioni di macro insieme al resto del programma, considerare la compilazione in due fasi con -Xmacro-fallback-classpath nella seconda fase che punta all'output della prima fase "

So già come evitarlo con un semplice editor e un termine inalale (seguendo semplicemente il messaggio di errore), ma è possibile ottenere l'attività in doppia fase in Eclipse?

+0

A questo punto creerò un nuovo progetto per mantenere le macro implementazioni in esso contenute. Questa brutta soluzione consente di compilare il codice in modo piacevole. – jeslg

+2

Sì, questa è una soluzione canonica per gestire i macro. –

risposta

9

Come creare un progetto macro da collegare ad un esistente Progetto:

  • Creare un progetto denominato scala per esempio ProjectMacros, mettere un file chiamato ad esempio Macros.scala contenente macro in esso. Questo progetto dovrebbe essere compilato senza problemi, perché ci sono solo macro.
  • Fare clic con il tasto destro del mouse sul progetto scala esistente, quindi su "Proprietà". Si apre la finestra Proprietà.
  • Nella sezione Java Build Path:
    • Nella scheda Projects, aggiungere ProjectMacros.
    • Nella scheda Libraries, fare clic su Add Class Folder e selezionare la directory ProjectMacros/bin.
  • Nella sezione Project References, controllare ProjectMacros

Ora, dopo aver aggiunto al progetto esistente un'importazione come import Macros._ è possibile utilizzare le macro funzioni e annotazioni.

1

Probabilmente si potrebbe usare Ant per la costruzione, ma dal momento che stai dicendo che hai già ottenuto questo con il terminale, penso che sarebbe più facile creare script ed eseguirlo usando il builder personalizzato (vai alle proprietà del progetto, fai clic su Builder -> Nuovo ... -> Programma e quindi configurarlo per eseguire il tuo script

3

Bene, separare l'implementazione di macro e l'invocazione di macro in due diversi progetti (e giocare con i riferimenti di progetto) sembra risolvere il problema. Il plugin -IDE è stato notevolmente migliorato con la sua versione per Scala 2.10-M4 (in termini di supporto macro), quindi vi consiglio di aggiornarlo

+3

Stai dicendo che l'IDE Scala ora supporta la compilazione a livelli nello stesso progetto? Se é cosi, come? – nilskp