问题标签 [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 - ocamlbuild 包括额外的包
我正在学习 LLVM ocaml 教程,并使用以下命令行进行编译:
有没有办法将这些额外的 cflags 和 lflags 移动到 _tags 或 myocamlbuild.ml 文件中,这样我就不需要键入它们/可以将它们存储在源代码控制中/制作可重复的构建?
这是 _tags 文件:
这是 myocamlbuild.ml 文件:
ocaml - 将构建工具添加到 ocamlbuild 项目 (Ragel)
我希望在LLVM Ocaml 教程的上下文中添加将Ragel源文件编译成 Ocaml 源文件的功能。具体来说,对于具有“.rl”扩展名的源文件,我希望它执行:
构建系统当然应该像往常一样编译生成的 Ocaml 文件。什么是一个简单的方法来做到这一点?
这是 _tags 文件:
这是 myocamlbuild.ml 文件:
c++ - 使用 ocamlbuild 构建 C++ 代码
我找到了许多关于如何.o
使用ocamlbuild
. 但是,这些不适用于ocamlbuild
不能开箱即用的 C++ 文件。
我尝试编写一个myocamlbuild.ml
文件(在请求后如下所示),提供一个规则 from .cpp
to.o
并且失败并ocamlc
抱怨它不知道如何处理.cpp
文件(即使编译器g++
通过命令行标志设置为)。
该文件libsoundness.clib
由一堆文件组成.o
。
当我这样做时,ocamlbuild libsoundness.a
我得到以下输出:
C++ 的唯一其他解决方案似乎是ocamlbuild-ctools
其网站已失效(我无法下载任何资源)。
有任何想法吗?
compiler-construction - OCaml如何静态构建项目
我必须准备我的 OCaml 项目以在某些库不可用的系统上编译/链接/运行(yojson、curl、cryptokit,但它可能不那么重要)我该怎么做?
到目前为止,我正在使用:
如果缺少某些软件包,它显然将不起作用。我的尝试是寻找库路径类型
并手动将缺少的库的文件夹复制到项目的文件夹中,这是它们的列表
好的,所以我尝试逐步编译项目中的每个文件,然后使用以下命令将所有内容编译为可执行文件:
但我得到:
我用谷歌搜索了一下,看起来 yojson 不是静态构建的,需要“biniou”库来填充依赖项(我不确定静态构建,但看起来像那样)。事实上,在将最后一个命令更改为(更改用星号标记)之后:
以前的错误没有发生,但我有一个新的:
哦,天哪,我不会包含 yojson/curl/cryptokit 所依赖的每个库 >:(。你们能帮帮我吗?此外,是否存在一些使用 ocamlbuild 的更简单的方法来做到这一点?
makefile - ocamlbuild 和 OUnit
我有一个结构如下的项目:
是Makefile
这样的:
运行make tests
(构建后main.byte
)返回此错误:
显示ocamlbuild
无法链接到main.byte
. tests
外观的规则应该是Makefile
怎样的?
debian - 使用 Ocamlnet 构建 OCaml 项目
我在 OCaml 中做一个项目,我正在尝试使用 Ocamlnet。我正在使用ocamlbuild
构建。这是我的构建命令行:
当我构建我的项目时,我收到了这个链接错误:
我没有Netsys_posix
直接使用任何东西,而是我的代码引用Netchannels
和Netcgi_cgi
.
我正在使用 Debian Wheezy (7) 并使用发行版软件包管理器安装软件包。OCaml 的版本是 3.12.1。这是我已安装的与 OCaml 相关的软件包的列表,以防它是相关的(很抱歉将它们一起运行在一行上,但将每个放在自己的行上似乎过度使用空间):
libapache2-mod-ocamlnet libbatteries-ocaml-dev libbatteries-ocaml-doc libbiniou-ocaml libbiniou-ocaml-dev libcalendar-ocaml libcalendar-ocaml-dev libcamomile-ocaml-data libcamomile-ocaml-dev libcryptgps-ocaml-dev libcryptokit-ocaml libcryptokit-ocaml-dev libcsv-ocaml-dev libderiving-ocsigen-ocaml libderiving-ocsigen-ocaml-dev libeasy-format-ocaml libeasy-format-ocaml-dev libeliom-ocaml libeliom-ocaml-dev libfindlib-ocaml libfindlib-ocaml-dev libjs-of-ocaml libjs-of-ocaml-dev liblwt-ocaml liblwt-ocaml-dev liblwt-ocaml-doc liblwt-ssl-ocaml liblwt-ssl-ocaml-dev libnethttpd-ocaml-dev libocamlnet-ocaml libocamlnet-ocaml-dev libocamlnet-ocaml-doc libocsigen-ocaml libocsigen-ocaml-doc libocsigen-xhtml-ocaml-dev libocsigenserver-ocaml libocsigenserver-ocaml-dev libpcre-ocaml libpcre-ocaml-dev libpostgresql-ocaml libpostgresql-ocaml-dev libreact-ocaml libreact-ocaml-dev libsqlite3-ocaml libsqlite3-ocaml-dev libssl-ocaml libssl-ocaml-dev libtext-ocaml libtext-ocaml-dev libtyxml-ocaml libtyxml-ocaml-dev libyojson-ocaml libyojson-ocaml-dev libzip-ocaml libzip-ocaml-dev ocaml ocaml-base ocaml-base-nox ocaml-batteries-included ocaml-findlib ocaml-interp ocaml-nox ocamlduce ocamlduce-base
我怎样才能让我的构建工作?
这是我的错误(在我的构建中)还是 Debian 打包错误?
更新:
我下载了最新的 OCaml (4.01.0) 和 OPAM (1.1.1),从源代码构建它们并将它们安装在 /opt 中,然后使用 OPAM 安装所需的库。现在我得到了一个非常相似的结果,但命名了一个不同的缺失函数:
ocaml - 创建 OCaml 库
我正在尝试创建一个可以在其他 OCaml 项目中使用的库,但我完全迷失了。
我目前正在使用ocamlbuild
它非常适合吐出可执行文件,但我不知道如何从中获取库。
我发现了 -a 选项ocamlopt
,ocamlc
但我不确定如何使用它。我找到的文档(例如,here)似乎假设了一些预先存在的知识。我什至不知道 .a 文件是什么。在我运行之后,我需要哪些输出文件来构建一个依赖于这个库的项目?我是否需要 mli 文件以便应用程序知道库代码的签名,或者以某种方式包含在输出中?此外,能够将所有文件打包在一起会很好,类似于 Java 的 .jar 文件。
在任何情况下,我都愿意为ocamlbuild
我做这一切,因为如果我必须调用,ocamlopt -a
我将不得不手动指定依赖项或修改脚本ocamldep
——这ocamlbuild
是应该修复的。但是,我不知道如何告诉它建立一个库。
如果有必要,我愿意使用 oasis 或 OPAM 或其他东西,但我想先学习如何仅使用基本工具来做到这一点。
ocaml - 带有 ocamlbuild 的模块包
我有以下文件层次结构:
我希望能够做到以下几点:
foo.ml
在创建Foo
模块时如何告诉 ocamlbuild 考虑?
编辑 1
感谢 daniel-bünzli 的回答,我能够做我想做的事。所以现在,我处于以下场景:
现在的问题是它Toto.Bar
似乎被Foo.Bar
. 我无法访问Toto.Bar
的内容。
编辑 2
好的,事实上这不是一个真正的问题。
我刚刚重命名Foo/bar.ml
-> Foo/fooBar.ml
。
所以我有以下内容foo.ml
:
如果我理解正确的话,Jane Street 的人会在Core_kernel
withCore_list
和其他一些模块中做同样的事情。
ocaml - OCaml 4.02.0 的 mark_tag_used 警告
我只是在使用 OCaml 4.02(使用 opam)尝试我的代码,我收到很多这样的警告:
但它定义在myocamlbuld.ml
:
我可以通过以下方式摆脱它:
但每次使用标签时,我都需要一条这样的线!此外,我的代码将不会使用早期版本的 OCaml 构建。一般解决方法是什么?