我試圖用一些OCaml的代碼鏈接一些C++/cmake的代碼。如果C++方面很簡單,我只需將其目標文件添加到ocamlopt。如果OCaml方面很簡單,我會將它的目標文件添加到cmake。但它們都是複雜的程序,有很多依賴關係。如何獲得OCaml的連接標誌使用C++鏈接的cmake建立
目前,我有工作,但它是一個黑客攻擊的一位:
我跑
ocamlopt -output-obj
讓主OCaml的對象:add_custom_command( OUTPUT ocaml_main.o DEPENDS ocaml.ml COMMAND ocamlfind ocamlopt -package mylib -linkpkg -output-obj -o ocaml_main.o ocaml.ml )
我
-o
再次運行ocamlopt和$PATH
設置爲包含假冒gcc
可執行文件。這種假gcc
刪除初始-o ocaml_main.o
參數,除了std_exit.o
所有.o
文件和打印出的其餘部分。該輸出被添加到CMake的參數(使用
target_link_libraries
)。
是否有一個更乾淨的方式來做到這一點(即獲得所有的OCaml依賴關係,遞歸地,準備好鏈接)?使用普通的ocamlfind query
可以讓我成爲其中的一部分,但是錯過了例如嵌入在cmxa文件中的額外鏈接器標誌。