簡體   English   中英

F#,Linux和makefile

[英]F#, Linux and makefiles

我打算將F#程序分發為二進制和源代碼,以便用戶可以根據需要重新編譯它。 在Windows上,我理解如何執行此操作:提供.fsproj和.sln文件,Visual Studio和MSBuild都可以理解這些文件。

在Linux上,C程序的傳統解決方案是makefile。 這取決於gcc直接可用,它始終是。

F#編譯器可以安裝在Linux上並在Mono下工作,所以到目前為止一切正常。 但是,據我所知,它不會創建fsc運行編譯器的場景,而是命令是mono ...path.../fsc.exe 這也沒關系,除了我不知道路徑是什么。 所以在我的情況下運行編譯器的完整命令可能是mono ~/FSharp-2.0.0.0/bin/fsc.exe types.fs tptp.fs main.fs -r FSharp.PowerPack.dll除了我不確定其中fsc.exe實際上位於用戶的計算機上。

有沒有辦法在makefile中找到它,或者最好是在文檔中解釋上述內容並依賴用戶根據他的設置修改命令?

如果您不想使用autoconf,請編寫README並告訴我們如何設置工具來編譯您的程序。 例如,您可以要求使用binfmt_misc內核模塊以允許系統自動使用正確的啟動程序來處理已知格式的文件,因為$ PATH必須包含fsc.exe的路徑,因此您的Makefile就像下面的代碼:

FILES=types.fs tptp.fs main.fs

target.exe: ${FILES}
        fsc.exe -o $@  ${FILES} -r FSharp.PowerPack.dll

或者您可以允許用戶使用makefile變量指向編譯器:

MONO=/usr/bin/mono
FSC=/usr/local/fsharp/bin/fsc.exe
COMPILER=${MONO} ${FSC}
FILES=types.fs tptp.fs main.fs

target.exe: ${FILES}
        ${COMPILER} -o $@  ${FILES} -r FSharp.PowerPack.dll

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM