有寫 OCaml 的想必 dune 也會搭配的使用,但 dune 的學習時使用一直讓我頻頻卡關,文件更像是語法教學而不是以工具為導向的寫作風格,所以大部分 dune 文件撰寫都是半猜半試弄出來的。
最近也才剛解開一個謎題,就是利用 dune 建立專案如果把 dune file 內的 public_name
移除你是無法編譯的,只要隨便一個 dune file 加進去又可以了。
解法是只要在 dune-project 檔案裡的 package
內多加 (allow_empty)
屬性就可以編譯了,不需要放 public_name
。
;...
(package
(allow_empty) ; <=
(name playground)
(synopsis "A short synopsis")
(description "A longer description")
(depends ocaml)
(tags
("add topics" "to describe" your project)))
至於我當初為何糾結與此問題,因為我原本以為加 public_name
是要把名稱暴露給專案內其他檔案所使用,但後來發現是為了該專案發布時暴露給引用的專案所使用的名稱,所以在一個只是隨便寫寫也沒要發布出去的專案這個要求我認為是完全沒意義的。
但我怎麼現在才知道呢,因為 dune 給的錯誤提示實在很微妙,在 dune 官方文件裡也找不到,希望 dune 文件撰寫的策略應該換一下。