编译一个OCaml项目,该项目链接需要C ++标准库的库(例如LLVM的OCaml绑定),使用-cc g++
ocamlc
参数与GCC> = 4.4生成非常详细的警告形式:
warning: deprecated conversion from string constant to ‘char*’
如何删除这些警告?
答案 0 :(得分:7)
问题源于ocamlc
生成中间C代码,当使用较新版本的GCC在C ++模式下编译时会触发警告。但是这个生成的代码不需要编译为C ++。对于这种针对包装的C ++库构建的常见情况,传递-cc g++
的唯一原因是确保构建C ++标准库依赖项。避免使用C ++前端编译ocamlc
中间代码的简单解决方案很简单:
-cclib -lstdc++
强制将生成的C代码与libstdc++
相关联,同时仍以纯C模式编译它。
答案 1 :(得分:2)
我认为你可以做到
#pragma GCC diagnostic ignored "-Wwrite-strings"
在C ++中压制这个。