Конфигурация сборки Oasis с подкаталогами

Я использую oasis для создания своего проекта ocaml, исходный код которого находится в каталоге src. Файл сборки oasis выглядит так:

OASISFormat: 0.4
Name:        Test
Version:     0.1
Synopsis:    no
Authors:     Me
License:     BSD-3-clause
Plugins:     META (0.4)

Executable abc
  Path:        src
  BuildTools:  ocamlbuild
  MainIs:      main.ml

Теперь я хотел бы организовать файлы по подпапкам, поместив a.mli и a.ml в src / util. После этого модуль становится невидимым для ocamlbuild / ocamlc, что приводит к ошибке «несвязанный модуль A». Если бы я вызвал ocamlc вручную, я мог бы добавить флаг -I src / util, чтобы снова сделать a.mli видимым.

Как я могу добавить дополнительные пути в конфигурацию oasis, не делая файлы полными библиотеками?


person lambda.xy.x    schedule 04.02.2015    source источник


Ответы (2)


Это невозможно с oasis, вам нужно изменить ваш _tags файл, но я бы не советовал вам это делать. Общий подход заключается в создании Library записей в вашем файле oasis. Это помогает сохранить структуру вашего проекта в чистоте. И если вы не хотите создавать библиотеку из утилит, тогда зачем переместить ее в подпапку.

person ivg    schedule 04.02.2015
comment
Для меня библиотека предназначена для повторного использования кода, то есть она достаточно универсальна, чтобы понадобиться в другом проекте. Но по-прежнему полезно разделять разные части проекта с помощью чистых интерфейсов, даже если части не должны использоваться сами по себе. Мне кажется излишним создание для них библиотеки (в смысле собственного файла .cma). - person lambda.xy.x; 05.02.2015

Вы можете попробовать добавить <src/utils>: include в ваш _tags файл (этот файл создается oasis, вы не можете редактировать его никаким образом: делайте это за рамками сгенерированной части.

Это прямо скажет ocamlbuild добавить -I src / utils к своим аргументам, я не думаю, что возможно указать oasis сделать это самому, не создавая библиотеку.

person PatJ    schedule 04.02.2015