微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何让CMake生成<idl_file>Support.[cxx,h]等TypeSupport文件?

如何解决如何让CMake生成<idl_file>Support.[cxx,h]等TypeSupport文件?

我正在使用 CMake 从 IDL 生成文件并将它们放在 RedHat 上的库中。问题是,没有生成 Support[c,h] 文件,所以我无法注册类型支持。在 CMake 中,我有以下行生成 Plugin.[c,h] 和 .[cxx,h] 文件。问题是,它没有生成任何 Support.[cxx,h] 文件

connextdds_rtiddsgen_run(IDL_FILE myFile.idl LANG "C++11")

据我所知,我不会通过在内部创建一个库来独立使用它们,是吗?我没有使用NDDS_STANDALONE_TYPE,也没有添加ndds_standalone_type.cxx。

如果我使用以下命令行,将显示 Support[c,h] 文件

rtiddsgen -namespace myFile.idl

但是,如果我手动添加 *Plugin.[c,h]、*Support.[c,h] 和 *.[ch] 文件并编译成一个库,然后使用我的程序链接它,有很多未定义的引用,例如:

myns::myTypePlugin_serialize_to_cdr_buffer(char*,unsigned int*,myns::myType const*) myns::myTypeSeq::length() const
myns::myTypePluginSupport_create_data_w_params(myns::myType*,DDS_TYPEDeallocationParams_t const*)
myns::myTypePluginSupport_create_data_w_params(DDS_TypeAllocationParams_t const*)

所以我试图让 CMake 为我完成这项工作,希望能有更好的结果。我如何让 CMake 生成这些 TypeSupport 文件

解决方法

根据定义connextdds_rtiddsgen_run函数的脚本ConnextDdsCodegen.cmake,预计会为C++生成文件*Support.cxx*Support.h语言:

list(APPEND sources "${path_base}Plugin.cxx" "${path_base}Support.cxx")
list(APPEND headers "${path_base}Plugin.h" "${path_base}Support.h")

但在 C++11 语言的情况下,我看不到这些文件的添加。

可能这意味着不会为 C++11(以及 C++03)生成给定的文件(*Support.cxx*Support.h)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。