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

How to get CMake to generate TypeSupport files such as <idl_file>Support.[cxx,h]?

我正在使用 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。

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

rtiddsgen -namespace myFile.idl

但是,如果我手动添加 *Plugin.[c,h]、*Support.[c,h] 和 *.[c.h] 文件并编译成一个库,那么 link 反对我的程序,有很多未定义的引用,例如:

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 语言的情况下添加这些文件。

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