使用用 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 和 CFLAG,但我仍然收到相同的错误。
这就是我在 cmakelist 中链接我的库的方式
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 应用程序的示例:使用 CMake 构建 ConnextDDS 应用程序
该示例使用"resources/cmake"文件夹中的文件(调用RTI代码生成器和FindPackage CMake脚本)。FindPackage 脚本也随 ConnextDDS 安装 (6.0.0) 一起提供,但来自社区的脚本更新更多。FindPackage 脚本将为您提供将 ConnextDDS 集成到项目中所需的所有定义、标志和库。
我添加了这个nddscd
,nddscored
,nddscpp2
到target_link_libraries
,这些标志到CMakeList.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")
相关文章:
- Clion显示错误,但可以使用Cmake成功构建代码
- Cmake:为 C 设置警告级别,并为 MSVC 单独设置C++代码(Visual C++)
- 不使用configure_file时如何使用CMake生成C++代码?
- CMake 错误:链接器命令失败,退出代码为 1 和 cpp.o 文件
- 如何使用 cmake 在代码中包含、构建和调试共享库 (.so)?
- Visual Studio代码不理解CMake-DDEBUG
- 编译/添加 cuda 代码到现有项目 (CMake)
- 将 cmake 代码段转换为函数 - 不起作用
- 如何设置 CMake 来构建包含路径包含的代码,如 #include < libdir/lib>?
- 使用用 C++ 和 DDS 编写的 CMAKE 编译代码
- 如何使用 CMAKE 编译现代 C++ 项目代码
- 使用 CMake 和 Maven 构建C++和 Java 代码,并捆绑在一个罐子里
- 我可以在我的 cmake 代码中手动使用 CMake 的 cpp 文件依赖项扫描程序吗?
- Cmake 将参数解析为代码
- Cmake并需要两次运行才能成功构建代码
- 为什么CMAKE add_依赖项不适用于使用CUDA代码的库
- 避免具有多个目标的重复CMAKE代码
- CMAKE/代码组织
- 如何确保 CMAKE 代码将在子目录之后运行
- 编译 cmake 代码时获取"ld: symbol(s) not found for architecture x86_64"