正确编译子文件夹中的模块(ocamlbuild)

2024-01-09

我最近决定整理我的项目目录中的文件。我将几种不同文件类型的解析器移至它们自己的目录中,并决定使用 ocamlbuild(因为项目变得越来越复杂,简单的 shell 脚本不再足够)。

我能够通过使用一些基本规则修改 myocamlbuild 来成功包含外部项目(调用ocaml_lib,我会在其他时间使用 ocamlfind ),但我对如何将文件夹作为模块正确包含到项目中感到困惑。我创建了一个parser.mlpack文件并用要包含的正确模块填充它(例如,“解析器/日期”等),编写了一个parser.mli在其实现的根目录中,并修改了_tags文件(见下文)。

在编译过程中,正确遍历了解析器目录,并且parser.cmi, parser.mli.depends都创建于_build目录;以及所有*.cm[xio]解析器子目录中的文件。

我觉得我可能在做一些多余的事情,但无论如何,该项目still编译时找不到Parser模块!

Thanks!

_tags

debug : true
<*.ml> : annot
"parser" : include
<parser/*.cmx>: for-pack(Parser)
<curlIO.*> : use_curl
<mySQL.*> : use_mysql
<**/*.native> or <**/*.byte> : use_str,use_unix,use_curl,use_mysql

编译错误

/usr/local/bin/ocamlopt.opt unix.cmxa str.cmxa -g -I /usr/local/lib/ocaml/site-lib/mysql mysql.cmxa -I /usr/local/lib/ocaml/curl curl.cmxa curlIO.cmx utilities.cmx date.cmx fraction.cmx logger.cmx mySQL.cmx data.cmx project.cmx -o project.native  
File "\_none\_", line 1, characters 0-1:  
Error: **No implementations provided for the following modules:**
         Parser referenced from project.cmx  
Command exited with code 2.  

你会注意到-I parser不包含在上述链接阶段;实际上没有包含任何与解析器相关的文件!

edit:从下面的评论和答案中添加了新的详细信息。


您需要在搜索路径中“包含”解析器目录。你可以在以下位置执行此操作_tags:

"parser": include

Then ocamlbuild可以在解析器目录中搜索感兴趣的文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正确编译子文件夹中的模块(ocamlbuild) 的相关文章

  • OCaml 在运行时编译和加载

    我正在尝试实现类似的目标eval 在 OCaml 中 我有一个string我想从中得到一个 OCaml 函数 目前我正在做以下事情 我将字符串转储到new ml并编译文件 Compile implementation Format std
  • 为什么编译超过 100,000 行的 std::vector::push_back 需要很长时间?

    我正在编译一个 C 库 它定义了一个从一组数据点中随机采样的函数 数据点存储在std vector 有 126 272std vectorPush back 语句 其中所讨论的向量的类型double 编译需要很长时间 为什么这需要这么长时间
  • 使用 OCaml 收集外部命令的输出

    在 OCaml 中调用外部命令并收集其输出的正确方法是什么 在Python中 我可以做这样的事情 os popen cmd read 如何在 OCaml 中获取外部程序的所有输出 或者 更好的是 带有 Lwt 的 OCaml Thanks
  • OCaml:用消息断言

    又是另一个问题 P 我不太确定是否应该将其发布在这里或 OCaml 邮件列表上 但我首先尝试这样做 我喜欢断言语句 然而 我发现如果没有附加消息 错误消息几乎毫无用处 第 XXX 行的断言冲突 很好 但实际上出了什么问题 我认为断言的一个很
  • 使用不带标签的 Core.Std.List.fold_left

    我正在尝试 Core 的List fold left List fold left a Core Std List t gt init b gt f b gt a gt b gt b
  • 尽管设置为 1.7,IntelliJ IDEA 13 仍使用 Java 1.5

    尽管在所有项目设置中指定了 JDK 1 7 包括File gt Project Structure gt Project Project SDK 则产生以下错误IntelliJ 13当尝试编译一些使用菱形运算符的简单 Java 7 代码时
  • 使用 OpenCL 支持构建 OpenCV

    在 CMake 中 我使用 OpenCL Enable ON 构建了 OpenCV 它自动检测到OPENCL INCLUDE DIR路径但是OPENCL LIBRARY即使单击配置后也是空的 为了OPENCL LIBRARY我也没有看到浏览
  • 使用两个不同的泛型参数调用泛型函数仍然可以编译

    下面的代码怎么可能编译通过 据我所知 count 函数是用两种不同的类型调用的 但编译器并没有抱怨并愉快地编译了这段代码 public class Test public static
  • 编译错误:linux/module.h:没有这样的文件或目录

    我写了一个简单的模块 define KERNEL define MODULE include
  • 有人可以解释一下这个 OCaml 程序中使用的类型语法吗?

    以下类型取自这个问题 https stackoverflow com q 50586942 633183 contains an error later fixed by the OP type task Success a gt a ta
  • 链接“let”语句时使用“and”还是“in”更好?

    我意识到这可能是一个愚蠢的问题 但是 如果我把一堆let不需要需要了解彼此价值观的语句 使用是否更好and or in 例如 以下哪一个更可取 如果有 let a foo and b bar and c baz in etc or let
  • OCaml 中的用户定义打印机

    printf fprintf等 全部接受 a转换 手册上说对于 a 用户定义的打印机 采用两个参数 并将第一个参数应用于 outchan 当前输出通道 和第二个参数 因此 第一个参数的类型必须为 out channel gt b gt un
  • OCaml 作为 C 库,hello world 示例

    我希望通过 C 调用 OCaml 代码 方法是将 OCaml 编译为包含 C 接口的静态或共享库 这一页 https caml inria fr pub docs manual ocaml intfc html似乎解释了如何为 OCaml
  • Ocaml 模块和包的区别

    我基本上是在尝试遵循这篇文章中的 stackoverflow 答案 OCaml 中 HttpRequest 的最佳模块是什么 https stackoverflow com questions 14134116 what is the be
  • 使用 SSD 加快编译时间

    我想尝试加快 C 项目的编译时间 他们有大约 300 万行代码 当然 我不需要总是编译每个项目 但有时有很多源文件被其他人修改过 我需要重新编译所有这些文件 例如 当有人更新一个项目时 ASN 1 https en wikipedia or
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • 如何制作一个makefile只用于编译一些java文件?

    我有三个java文件 名为A java B java C java A将创建对象B B将创建对象C 但我以前从未构建过makefile 有谁可以帮我构建一个 makefile 来编译这三个 java 文件吗 我应该使用什么工具来制作 mak
  • 如何使用pyinstaller?

    好吧 我是一个完全的编程菜鸟 我正在尝试编译一个我编写的简单程序 该程序接受一个字符串并以莫尔斯电码打印该字符串 它被称为 morse py 我使用安装 pyinstaller pip install pyinstaller 我正在尝试使用
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真

随机推荐

  • 小数舍入问题 (python)

    在我的程序中 小数精度非常重要 我的很多计算必须精确到小数点后很多位 比如50 因为我使用的是python 所以一直使用decimal模块 context prec 99 即 实例化小数对象时设置为具有 99 位小数精度 因为 python
  • 如何在玩笑中模拟react-i18next和i18n.js?

    包 json moduleNameMapper i18next
  • (iphone) [super TouchsBegan/Moved/Ended] 是做什么的?

    大多数重载方法需要 super theMethod call 例如 super viewDidLoad super viewWillAppear and super dealloc 我没有再三考虑是否需要 super touchesBega
  • NSMutableDictionary 的 JSONRepresentation

    我想打电话给JSONRepresentation上的方法NSMutableDictionary目的 我用它来称呼它 userDict JSONRepresentation 但我收到以下警告 NSMutableDictionary may n
  • Celery工人并发

    我制作了一个抓取工具来扫描大约 150 个链接 每个链接都有大约 5k 个子链接可供获取信息 我正在使用 Celery 在后台运行抓取工具并将数据存储在 Django ORM 上 我用BeautifulSoup剪贴簿留言网址 当我使用这个命
  • 如何在 Visual Studio 2012 中更改 ipch 路径

    我看到VS2012在解决方案文件夹中创建了一些文件 sdf suo ipch等 是否可以更改创建这些文件的文件夹 The methods for VS2010 don t work in VS2012 see screenshot Go t
  • Qt 上的 startActivity,没有任何显示

    我编码如下 似乎显示 Android 设置菜单 但没有显示任何内容 我没有看到任何错误或日志 我不知道打电话后会发生什么startActivity QAndroidJniObject activity QAndroidJniObject c
  • 如何使用 PHP 将所有字符转换为其等效的 html 实体

    我想转换这个 email protected cdn cgi l email protection to 104 101 108 108 111 064 100 111 109 097 105 110 046 099 111 109 我努力
  • vue-chartjs - 中间有文本的圆环图

    我想在甜甜圈类型的图表内添加文本 我在我的 vuejs 项目中使用这个插件 https github com apertureless vue chartjs https github com apertureless vue chartj
  • Promise 回调中的单元测试逻辑

    我有一个 ES6 Aurelia 应用程序 我正在使用 jasmine 来测试 我试图测试的方法看起来像这样 update let vm this vm getData then response gt vm processData res
  • mscorlib.dll 和 System.dll

    为什么微软最初决定维护这两个独立的核心库 也许他们考虑到了一些可扩展性问题 但现在我从未见过任何类型的应用程序不需要两者 有人有这方面的内幕消息吗 这并不重要 但多年来一直在我的脑海里 附言 我知道这两个库中有什么 我知道区别 我是的忠实粉
  • 防止键盘关闭。反应本机

    当我有键盘时如何保持键盘打开TextInput and Touchable靠近发送消息的输入 所以我想在不双击可触摸的情况下发送消息 首先隐藏键盘 其次发送消息 怎么做 Use keyboardShouldPersistTaps来处理这个问
  • 为什么 Jersey 不尊重动态绑定过滤器中的优先级?

    我正在使用DynamicFeature in Jersey https jersey java net documentation latest filters and interceptors html d0e10049将容器请求过滤器动
  • 如何在 Logstash 中获取部分 Filebeat 源文件名

    我有一个 Filebeat 实例 版本 7 5 0 在 Windows Server 上运行 监视本地文件夹中的日志文件 并将这些数据向前发送到 Logstash 版本 7 5 0 在 Docker 容器中运行 在 Logstash 中 我
  • 虚拟键盘处于活动状态时的屏幕样式

    理想情况下 我希望整个界面有一个定制样式这可以在 ios itouch ipad 或具有虚拟键盘的 Android 同等设备上看到 请参阅下面的更多细节 当键盘 存在 时 自定义设置的 CSS 黑客规则将处于活动状态 也是一个可接受的解决方
  • Xcode 始终无法在设备上启动应用程序:“未知数据包回复:环境数据包“超时”。”

    自从升级到 Xcode 4 2 以来 我经常遇到错误 尝试调试应用程序失败 并显示消息 未知数据包回复 环境数据包 超时 重新启动设备并不能始终解决问题 尽管有时可以解决 重新启动 Xcode 或重新启动开发计算机也不能解决问题 清理和重新
  • 如何计算两个日期时间之间的小时,分​​钟? [复制]

    这个问题在这里已经有答案了 我有两个约会 date1 2014 02 11 04 04 26 AM date2 2014 02 11 05 36 56 AM 我想计算差异并显示如下 1 hour 32 minutes 利用DateTime
  • 来自 Java 的 UnknownHostException 但主机通过 Ping/nslookup/curl 进行解析

    当 Java EE 服务器尝试从其中一项服务解析主机名时 我们遇到以下异常 我们能够使用 ping nslookup 命令手动解析盒子上的主机名 我们还能够使用与服务器尝试使用的参数相同的curl 来启动该外部服务 因此 似乎只有当我们尝试
  • 在 matplotlib/gnuplot 中绘制标记间隔

    我有一个数据样本 如下所示 a 10 15 22 10 15 30 OK b 10 15 23 10 15 28 OK c 10 16 00 10 17 10 FAILED b 10 16 30 10 16 50 OK 我想要的是按以下方式
  • 正确编译子文件夹中的模块(ocamlbuild)

    我最近决定整理我的项目目录中的文件 我将几种不同文件类型的解析器移至它们自己的目录中 并决定使用 ocamlbuild 因为项目变得越来越复杂 简单的 shell 脚本不再足够 我能够通过使用一些基本规则修改 myocamlbuild 来成