我试图用一些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文件中的额外链接器标志。