我是新来OCaml的,但我试图找出等价的__filename
,__dirname
从节点。也就是说,我需要相对于包含所讨论代码的文件建立一个路径。
作为参考,我正在研究Ghuloum的IACC:http ://ell.io/tt$ocameel
我正在构建我的第一个编译器,并且在编译器的源代码旁边有一个非常简单的“运行时”文件(临时位于C中)。我需要能够将此文件的路径作为参数(我想应该是预编译的版本)传递给gcc
我或我的链接器,以便在调用链接器/汇编器工具时将其与编译器的输出链接起来。
(这可能是一个愚蠢的问题,在这里我有点陌生,不为人所知,“编译器如何将运行时传递给链接器”或类似的东西。欢迎对此作出惯用解决方案的任何评论,甚至如果不是上述问题的直接答案!)
如果您是通过直接运行源文件ocaml myfile.ml
,Sys.argv.(0)
则将为您提供源文件的路径,您可以用来Filename.dirname
从中获取目录。
如果先将源文件编译为可执行文件,然后运行该可执行文件,Sys.argv.(0)
则会为您提供可执行文件的名称。在那种情况下,不可能获得源代码的位置(尤其是如果您认为运行可执行文件的人甚至可能在其系统上没有源代码)。
如果设置项目结构,以使源位于src /中,已编译的二进制文件位于bin /中,而已编译的stdlib位于lib /中,则可以Filename.dirname Sys.argv.(0) ^ "../lib"
用作的库路径gcc
。这将工作不管你运行ocaml src/mycompiler.ml
,bin/mycompiler
或只是mycompiler
安装一切后/usr/
或/usr/local/
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句