问题标签 [ocamlbuild]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ocaml - ocamlfind/ocamlbuild 工具链如何与包的项目本地副本一起使用?
我试图保持我的项目自包含,在项目存储库中构建和引用所有主要的 3rd 方库依赖项。我项目的主要 ocaml 部分依赖于 ocamlbuild。
但是对于像 Batteries Included 这样的复杂包,似乎强烈期望它们通过 ocamlfind 链接到一个项目中。ocamlfind 似乎假设软件包将被全局安装。(我意识到它允许环境变量及其 conf 指向备用位置,但它基本上似乎仍然是围绕包是全局配置的假设构建的——它没有等效-I
或-L
标志来动态扩展包的搜索路径,例如,可以设置环境变量以动态覆盖 ocamlfind 配置以搜索项目本地树,但这比单纯的参数要尴尬得多,而且在不同时删除的情况下这样做似乎也很有挑战性主要系统包的可发现性site-lib
,这可能也是需要的。)
对于使用 ocamlbuild 的项目,在项目本地树中构建和构建非平凡的 3rd 方包的明智策略是什么?
linker - ocamlbuild 中链接库的顺序
我对将库添加到链接器的顺序有疑问。以前由 ocamlbuild 构建的库链接在我包含在flag
规则中的库列表之后。而且,我也没有看到任何方法来定义这种类型的依赖关系myocamlbuild.ml
。
具体来说,问题在于与以前构建的库 ( gzcaml
) 的链接需要库本身 ( z
)。由于较新版本的 gcc 增加了严格性,因此参数-lz
必须出现在libgzcaml.a
.
我将所有这些库包括在内,
where适当地process
创建一个交替库和的列表A"-cclib"
。
此外,附加了其他库(来自详细输出-lm
和-ldl
),但我不知道如何修改/附加这些库?(这将立即解决我的问题)。
我myocamlbuild.ml
的很长,否则我会把它包括在这里。我试过将上面的代码移动到底部After_rules
,到顶部。它确实改变了顺序,但从来没有在 ocamlbuild 之前创建的构建库(c 和其他)之后。
编辑 下面是我在配置脚本和 ocamlbuild 中用于解决上述问题的代码片段。干杯!
在configure.ac
在myocamlbuild.ml.in
makefile - 在 Ocaml 的 makefile 中包含包装电池
我想使用Ocaml Batteries模块List
的功能。我已经安装了电池,入门中的一个简单代码可用于ocamlfind ocamlc -package batteries -linkpkg euler001.ml -o euler001
.
现在回到我的项目,我有一个makefile
如下:
我试图用 替换所有ocamlc $(FLAGS)
,ocamlfind ocamlc -package batteries -linkpkg $(FLAGS)
但它没有工作......
谁能告诉我如何修改makefile
它以使其符合batteries
?
ocaml - OCamlbuild 和构建原生动态链接库
我在 ocaml listserv 上发布了一个没有人回应的问题,我希望这里有人可以称我为白痴,确认情况,或提供创造性的解决方案。
通过构建动态库时,ocamlbuild
我卡在了最后的链接行上,
这会产生与此处类似的错误。当我删除-cc
选项并将-shared
标志传递给gcc
.
OCamlbuild 将-cc
选项传递给所有内容,因此删除它不是一个选项。似乎是 ocamlopt 中的一个错误;有没有人遇到过类似的情况?我在编译中是否遗漏了任何东西或任何选项?
谢谢。
编辑
我的解决方案只是通过 myocamlbuild.ml 中的标志传递选项
makefile - 我的 Makefile 中有硬编码路径 - 如何使用 ocamlfind 消除这些路径?(或如何使用 ocamlbuild 或 omake 代替)
我正在尝试构建一个需要 camlp4 扩展的 ocaml 项目(在本例中为 pa_deriving)。这是我的Makefile:
这个 Makefile 有效;它完成了工作,但问题是我上面有硬编码的路径,例如: /home/p/godi-3.12.1.0/lib/ocaml/site-lib/deriving-ocsigen/pa_deriving.cma 指的是我的 OCaml 的 godi 安装。我想摆脱这些,以便我可以分发代码和 Makefile,以便任何人都可以使用它进行构建。
我应该为此使用 omake 还是 ocamlbuild ?我想使用 omake 并且为此使用了 OMakefile ,但没有任何工作 - 任何建议将不胜感激。
更新:我尝试将 ocamlbuild 与以下 _tags 文件一起使用:
使用以下 ocamlbuild 命令:ocamlbuild -use-ocamlfind test_logic.native -classic-display
我得到:
我需要在 _tags 文件中添加什么来纠正这个问题?
ocaml - Ocamlopt 和缺少 crt2.o 文件
在 Windows 7 64 位(自安装程序)上安装了 OCaml 后,我尝试创建一个简单的 exe 文件
根据需要,我将本机代码编译器 (ocamlopt) 与 Visual C++(我安装了 Visual Studio 10)和 Microsoft Assembler MASM 版本 8(还安装了 MinGW)一起使用;我还为 OCaml (c:\ProgramFiles\Ocaml\bin)、MinGW (c:\ProgramFiles\MinGW\bin) 和 MASM (C:\masm32\bin) 设置了路径变量。然而,尽管我尽了最大的努力和大量的搜索,我还是无法绕过错误消息
除非我将 HelloWorld.ml 文件放在 Crt2.o 文件所在的 MinGW 的 lib 文件夹中。我很欣赏答案可能很简单,但我被困住了。任何帮助将不胜感激。
makefile - 使用 coqtop -R coqdir 生成文件
我有一个生成文件:
添加命令:coqtop -R coqdir
我必须在我的计算机中给出一个物理路径,但是这个目录取决于用户目录。( ~/color/trunk/color/devel/gwen Devel and ~/color/trunk/color CoLoR
)。
在没有给出物理路径的情况下,是否有另一种方法可以调用和组合程序?
ocaml - OCamlbuild 和 camlp4.macro
我有一个项目,其中几个 OCaml 源文件使用 IFDEF。有没有一种简单的方法告诉 OCamlbuild 这个项目的所有 .ml 文件都应该由 camlp4.macro 预处理?
ocaml - OCamlbuild 和 camlp4 选项
我正在使用 camlp4.macro 来启用条件编译。我在通知 OCamlbuild 标记为“use_jscore”的某些文件必须使用给定的 camlp4 选项进行预处理时遇到问题。这是我目前拥有的:
但这被 OCamlbuild 完全错误地逃脱了。我正在使用 ocamlfind,所以基本上我想告诉 OCamlbuild 的是,所有标记为“use_jscore”的 OCaml 文件都必须由 camlp4.macro 预处理,该文件也提供了 -DUSE_JSCORE 选项。
ocaml - 使用 'ocamlfind install' 设置 Ocaml 库,然后在 ocamlbuild 中使用该库
我按照此处的说明使用 ocamlfind install 在 site-lib 中设置安装库。我有两个库:一个称为逻辑库,另一个称为布尔库。在每种情况下,我都在库中安装了 .cmo、.cmx、.cmi 和 .mli 文件,例如:
然后,当我使用 ocamlbuild 构建另一个依赖于逻辑和布尔值的项目时,我收到以下错误消息:
然后,我将逻辑和布尔项目中的 .o 文件复制到 site-lib 中各自的区域,并对其进行了编译和链接。
我想知道为什么需要 .o 文件以及为什么这里涉及 gcc?
这是我的 _tags 文件,以防万一: