我正在使用 CMake 从 IDL 生成文件并将它们放在 RedHat 上的库中。问题是,未生成 <idl_file>Support[c,h] 文件,因此我无法注册类型支持。在 CMake 中,我有以下行生成 <idl_file>Plugin.[c,h] 和 <idl_file>.[cxx,h] 文件。问题是,它没有生成任何 <idl_file>Support.[cxx,h] 文件。
connextdds_rtiddsgen_run(IDL_FILE myFile.idl LANG "C++11")
据我所知,我不是通过在内部创建一个库来独立使用它们,对吗?我没有使用 NDDS_STANDALONE_TYPE,也没有添加 ndds_standalone_type.cxx。
如果我使用以下命令行,将显示 <idl_file>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 文件?