Копирование только что созданного файла как строфы Dune

Я написал библиотеку на OCaml, все ее источники находятся в папке lib. Я также подготовил исполняемые файлы фасада в папке bin. Теперь я хотел бы подготовить несколько примеров использования упомянутых выше исполняемых файлов. Для этого мне нужно либо заранее скопировать исполняемый файл, либо (желательно) сказать Dune использовать только что созданный после сборки.

И вот мой вопрос. Раздел copy_files Дюны не позволяет 1 мне копировать из _build папки. Есть ли другой способ использовать свежие исполняемые файлы каждый раз после сборки, или мне нужно скопировать их в какой-то момент и поддерживать в актуальном состоянии?

Ниже представлена ​​структура проекта (в случае, если словесное описание каким-либо образом вводило в заблуждение).

root
   lib <- source
   bin <- frontend for source
   examples <- how to use the above frontend

1 Под запретом я подразумеваю следующее использование этой строфы: ( copy_files %{project_root}/_build/default/bin/program.exe )


person zajer    schedule 27.03.2021    source источник
comment
См. stackoverflow.com/questions/64373805/ Если вы не создадите Makefile, который копирует сгенерированный исполняемый файл в корень, я не знаю другого способа сделать это.   -  person Lhooq    schedule 27.03.2021


Ответы (1)


Решение, предложенное @Lhooq, может заключаться в использовании команды dune exec с параметром --root.

Что касается предоставленного сценария, если мы сделаем скрипт:

   dune exec --root=../.. ./bin/some_program.exe 
(* 
   Where 'some_program' is the name of an .ml file located in bin folder.
   I assumed here that the program is compiled to native code, not to bytecode (hence the .exe).
*)

и поместите его в каталог examples, затем, вызвав его, мы фактически запустим последнюю сборку программы, определенной в some_program.ml, расположенном в папке bin.

И чтобы прояснить ситуацию: папка bin НЕ содержит скомпилированных файлов (ни .exe, ни .bc).

person zajer    schedule 17.04.2021