2017-03-09 154 views
0

我有一個使用ocamlbuild成功構建的項目。不過,我還想通過頂層與不同模塊的項目個別功能交互的簡單方法,但我嘗試使用ocamlmktop並沒有按照我的意願工作。我發現,除非手動將.cmi文件放在活動目錄中,否則會出現「未綁定模塊」錯誤。我目前使用建立的命令是:與ocamlbuild一起使用ocamlmktop

ocamlfind ocamlmktop -I _build -o my_ocaml -linkpkg -package str module1.cmo module2.cmo 

是否還有更好的,少哈克的方式來獲取頂級在這個項目結構的工作不動,CMI文件出_build目錄?

編輯:我想通了,我可以讓我辦頂層爲

./my_ocaml -I _build 

它加載的類型和模塊但這似乎仍然哈克。有沒有辦法在可能的情況下烘焙搜索路徑或cmi文件?

編輯2:我認爲我的問題的解決方案實際上可能不是編譯自定義頂層給定此接口文件的限制。我已經將加載指令添加到我的.ocamlinit以使用模塊。如果有人有更好的想法來解決這個問題,我將不勝感激。

回答

0

您可以通過在my_ocaml.mltop文件中列出您想要的模塊名稱建立一個頂層:

Module1 
Module2 
subdir/Module3 

然後構建目標my_ocaml.top將調用ocamlmktop以預期的方式,你可以運行結果my_ocaml.top頂層。

這不會改變您需要將_build添加到包含路徑的類型檢查程序能夠找到.cmi文件的方式。你可以通過傳遞命令行參數-I _build或者從頂層的#dir "_build";;來調用頂層,如果你願意,最後的命令也可以放在你的.ocamlinit中。