繁体   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