如何解决如何让CMake生成<idl_file>Support.[cxx,h]等TypeSupport文件?
我正在使用 CMake 从 IDL 生成文件并将它们放在 RedHat 上的库中。问题是,没有生成
connextdds_rtiddsgen_run(IDL_FILE myFile.idl LANG "C++11")
据我所知,我不会通过在内部创建一个库来独立使用它们,是吗?我没有使用NDDS_STANDALONE_TYPE,也没有添加ndds_standalone_type.cxx。
如果我使用以下命令行,将显示
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 举报,一经查实,本站将立刻删除。