2011-11-21 18 views
6

Ho un file .fsproj (e .sln) da un progetto F # che è stato sviluppato su Windows che voglio costruire su Mac.Edificio F # .fsproj su Mac (Mono)

Ho costruito diversi programmi F # a file sorgente singola con Mono, ed è grandioso. Sfortunatamente, questo .fsproj non è banale, poiché ci sono diversi file sorgente e un numero di riferimenti.

Definire la riga di comando per costruire il progetto a mano non sembra divertente.

C'è uno strumento che analizzerà .sln/.fsproj e fornirà la riga di comando corretta? O forse basta fare la build da .sln/.fsproj?

Mi piacerebbe farlo senza MonoDevelop o SharpDevelop se possibile, anche se le risposte in questo senso sono benvenute.

+0

Vedere http://stackoverflow.com/questions/254722/how-can-i-build-a-visual-studio-solution-using-xbuild-from-mono poiché i progetti F # dovrebbero essere normali progetti di msbuild. – JPW

+0

Tendo a utilizzare i makefile: una volta scritti alcuni diventa molto semplice –

+0

@JohnPalmer hai un esempio o modello da condividere? – Harold

risposta

3

Ecco un semplice makefile che uso

FSC=/home/john/FSharp-2.0.0.0/bin/fsc.exe 
FSFILES= tokenizer.fs BuildTree.fs symtable.fs mkVMCommands.fs codegen.fs 
compiler: compiler.exe 

compiler.exe: $(FSFILES) 
    $(FSC) --define:LINUX --debug:full --debug+ $(FSFILES) -o:compiler.exe --sig:sigfile.fs 

run: compiler 
    mono compiler.exe 

nota che le righe dopo ogni target - compiler.exe:... devono essere rientrato con una TAB piuttosto che spazi. Se hai bisogno di reerenze, aggiungi semplicemente -r "Somefile.dll" alla riga di comando.

+0

Interessante. E decisamente più minimale del file .fsproj. Grazie per aver condiviso questo. Sembra che avere uno strumento per produrre questo da .fsproj sia utile, l'aggiornamento a mano sembra incline all'errore. – Harold

+0

@Harold - Non conosco alcuno strumento automatico per convertire tra file .fsproj e makefile, ma ho scoperto che aggiornare i makefile a mano è piuttosto semplice –

2

Si consiglia di guardare xbuild, che legge direttamente i file sln e fsproj e li crea sulla piattaforma Mono.

Come @JPW menzionato nel commento, anche works on Mac OS X. Anche se il supporto per F # di xbuild sembra essere immaturo, qualcuno è riuscito a build F# projects with xbuild on Linux. Si spera che sia utile configurare l'ambiente di generazione su Mac.