我是使用CMAKE的新手,并且正在编写Cmakelists.txt文件来编译我的项目。我收到以下错误:

/usr/bin/ld: /home/tarun/rti_connext_dds-6.0.0/lib/x64Linux3gcc5.4.0/libnddsc.so: undefined reference to symbol 'PRESTypePlugin_interpretedSerialize'

/home/tarun/rti_connext_dds-6.0.0/lib/x64Linux3gcc5.4.0/libnddscore.so: error adding symbols: DSO missing from command line

我尝试了其他可用的解决方案,例如添加LFLAGS和CFLAGS,但仍然遇到相同的错误。

这就是我在cmakelists中链接我的库的方式
target_link_libraries(test_IMU_DDS PUBLIC
${CONNEXTDDS_CPP2_API_LIBRARIES_RELEASE_SHARED}
${CONNEXTDDS_EXTERNAL_LIBS}
${COMMANDTYPE_OBJS}
${PROJECT_SOURCE_DIR}/xspublic/xscommon
${PROJECT_SOURCE_DIR}/xspublic/xscontroller
${PROJECT_SOURCE_DIR}/xspublic/xstypes
${CMAKE_DL_LIBS}
)

有人可以帮助我吗?

最佳答案

有一个关于如何在其社区GitHub个人资料中构建ConnextDDS应用程序的示例:Build a ConnextDDS application with CMake

该示例使用“resources/cmake”文件夹中的文件(以调用RTI代码生成器和FindPackage CMake脚本)。 ConnextDDS安装(6.0.0)也提供了FindPackage脚本,但是该社区中的脚本有了更新。 FindPackage脚本将为您提供将ConnextDDS集成到项目中所需的所有定义,标志和库。

09-07 09:05