首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法为OpenDDS生成代码

有没有办法为OpenDDS生成代码
EN

Stack Overflow用户
提问于 2021-01-08 01:21:27
回答 1查看 531关注 0票数 0

我知道RTI有一个代码生成器来创建发布服务器和订阅服务器,然后允许您创建DataReaders和DataWriters。有没有办法在OpenDDS中生成所需的代码?我已经建立了idl文件,该文件列出了要传输的主题,我在这里看到:https://objectcomputing.com/resources/publications/mnb/code-generation-with-opendds-part-i提供了生成包装器的指令,但我仍然不理解是否有一种方法可以简单地构建idl文件,以便生成OpenDDS体系结构所需的发行者和订阅者文件。例如,RTI有rtiddsgen。

当我只使用Messenger.idl构建文件时,会出现错误消息:

代码语言:javascript
复制
-- Selecting Windows SDK version 10.0.18362.0 to target Windows 10.0.19041.
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - not found
-- Found Threads: TRUE
-- Configuring done
CMake Error at CMakeLists.txt:15 (add_executable):
  Cannot find source file:

    Publisher.cpp

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx


CMake Error at CMakeLists.txt:22 (add_executable):
  Cannot find source file:

    Subscriber.cpp

  Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
  .hpp .hxx .in .txx


CMake Error at CMakeLists.txt:15 (add_executable):
  No SOURCES given to target: publisher


CMake Error at CMakeLists.txt:22 (add_executable):
  No SOURCES given to target: subscriber

cmake文件如下所示:

代码语言:javascript
复制
    project(OpenDDS_DevGuide_Messenger CXX)
cmake_minimum_required(VERSION 3.8.2)

find_package(OpenDDS REQUIRED)

set(CMAKE_CXX_COMPILER ${OPENDDS_COMPILER})

set(opendds_libs
  OpenDDS::Dcps # Core OpenDDS Library
  OpenDDS::InfoRepoDiscovery OpenDDS::Tcp # For run_test.pl
  OpenDDS::Rtps OpenDDS::Rtps_Udp # For run_test.pl --rtps
)

# Publisher
add_executable(publisher
  Publisher.cpp
)
OPENDDS_TARGET_SOURCES(publisher Messenger.idl)
target_link_libraries(publisher ${opendds_libs})

# Subscriber
add_executable(subscriber
  Subscriber.cpp
  DataReaderListenerImpl.cpp
)
OPENDDS_TARGET_SOURCES(subscriber Messenger.idl)
target_link_libraries(subscriber ${opendds_libs})
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-08 02:41:10

是的,OpenDDS有一个代码生成器opendds_idl,它是OpenDDS的核心组件之一。它可以手动运行,通过MPC,或者在CMake中使用OPENDDS_TARGET_SOURCES,就像这里一样。

这个错误是很清楚的。这是来自Developer‘CMakeLists.txt示例的CMakeLists.txt文件,其中包括C++文件。CMake找不到他们。也许您在没有复制cpp文件的情况下在其他地方复制了CMakeLists.txt?如果是这样,您可以将cpp文件复制到复制CMakeLists.txt的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65622191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档