使用 C++ 和 DDS 编写的 CMAKE 编译代码
Compiling Code with CMAKE written with C++ and DDS
我刚开始使用 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}
)
有人能帮我解决这个问题吗?
我将此 nddscd
、nddscored
、nddscpp2
添加到 target_link_libraries
,并将这些标志添加到 CMakeLists.txt:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRTI_UNIX")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRTI_LINUX")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRTI_64BIT")
在他们的社区 GitHub 配置文件中有一个关于如何构建 ConnextDDS 应用程序的示例:Build a ConnextDDS application with CMake
该示例使用“resources/cmake”文件夹中的文件(调用 RTI 代码生成器和 FindPackage CMake 脚本)。 FindPackage 脚本也随 ConnextDDS 安装 (6.0.0) 一起提供,但来自社区的脚本更新得更多。 FindPackage 脚本将为您提供将 ConnextDDS 集成到项目中所需的所有定义、标志和库。
我刚开始使用 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}
)
有人能帮我解决这个问题吗?
我将此 nddscd
、nddscored
、nddscpp2
添加到 target_link_libraries
,并将这些标志添加到 CMakeLists.txt:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRTI_UNIX")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRTI_LINUX")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRTI_64BIT")
在他们的社区 GitHub 配置文件中有一个关于如何构建 ConnextDDS 应用程序的示例:Build a ConnextDDS application with CMake
该示例使用“resources/cmake”文件夹中的文件(调用 RTI 代码生成器和 FindPackage CMake 脚本)。 FindPackage 脚本也随 ConnextDDS 安装 (6.0.0) 一起提供,但来自社区的脚本更新得更多。 FindPackage 脚本将为您提供将 ConnextDDS 集成到项目中所需的所有定义、标志和库。