构建 dds-tutorial-cpp-ex 时未找到 OpenSpliceConfig.cmake 或 opensplice-config.cmake

Posted

技术标签:

【中文标题】构建 dds-tutorial-cpp-ex 时未找到 OpenSpliceConfig.cmake 或 opensplice-config.cmake【英文标题】:OpenSpliceConfig.cmake or opensplice-config.cmake not found while building dds-tutorial-cpp-ex 【发布时间】:2021-03-12 11:01:52 【问题描述】:

我正在努力学习 dds。根据tutorial,附录1 建议查看github 中提供的示例,称为dds-examples-cpp-ex。

根据自述文件构建此示例的简单命令是cmake . && make

我执行命令

cmake . && make

在我的本地机器上克隆此文件夹后的 cmake 目录

我收到以下错误:

CMake Error at CMakeLists.txt:28 (FIND_PACKAGE):
  By not providing "FindOpenSplice.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "OpenSplice", but CMake did not find one.

  Could not find a package configuration file provided by "OpenSplice" with
  any of the following names:

    OpenSpliceConfig.cmake
    opensplice-config.cmake

  Add the installation prefix of "OpenSplice" to CMAKE_PREFIX_PATH or set
  "OpenSplice_DIR" to a directory containing one of the above files.  If
  "OpenSplice" provides a separate development package or SDK, be sure it has
  been installed.


-- Configuring incomplete, errors occurred!
See also "/home/gajendra/Documents/AnokhiDocs/DDS/dds-tutorial-cpp-ex/cmake/CMakeFiles/CMakeOutput.log".

我试图在我的系统上找到OpenSpliceConfig.cmake && opensplice-config.cmake,但没有得到任何结果。

我的问题是如何更正路径或修复此错误?

我在本地机器上运行了 OpenSplice,并且直接从 $OSPL_HOME/opensplice/dcps/Tutorial 执行了其他示例。他们工作正常。

我也尝试构建ch1。我在ch1/CMakeLists.txt 中编辑了第二行来自

set(CMAKE_MODULE_PATH ../cmake)

set(CMAKE_MODULE_PATH $CMAKE_CURRENT_SOURCE_DIR/../cmake)

这样它就可以在CMakeLists.txt所在的根目录下找到cmake文件夹。

我在执行以下操作时遇到了同样的问题:

    cd ch1 && mkdir build && cd build && cmake ..

CMake Error at /home/gajendra/Documents/AnokhiDocs/DDS/dds-tutorial-cpp-ex/cmake/FindOpenSplice.cmake:72 (MESSAGE):Could not find OpenSplice DDS
Call Stack (most recent call first):
 CMakeLists.txt:8 (find_package)

【问题讨论】:

其实错误信息中提到的脚本FindOpenSplice.cmake存在于cmake/FindOpenSplice.cmake。但是从cmake/ 目录运行cmake错误(不确定他们为什么在该目录中提供CMakeLists.txt)。有ch1/ch2/ch3/ 目录,它们正好包含示例。从该目录运行cmake “当然在这个错误之前我也得到了 MacroOpenSplice 和 osmacros not found。” - 总是说出你遇到的第一个错误。实际上,我觉得奇怪的是他们将 relative 路径放入 CMAKE_MODULE_PATH 变量中。尝试将ch1/CMakeLists.txt 文件中的第二行 - set(CMAKE_MODULE_PATH ../cmake) - 替换为 set(CMAKE_MODULE_PATH $CMAKE_CURRENT_SOURCE_DIR/../cmake) 如您所见,cmets 非常不适合多行代码或日志。相反,将此类代码/日志添加到问题帖子本身。 酷我将您的建议和我们的讨论移至帖子本身。我将删除这些消息,因为 *** 建议避免在 cmets 中进行扩展讨论。你也可以做到。 :) 感谢您的建议,我是这个平台的新手,所以这很有帮助。 嗯,消息Could not find OpenSplice DDS,正如脚本报告的问题一样,并没有它可能的帮助:它不包含实际搜索的信息。您可以查看构建目录中的CMakeCache.txt 文件并在那里找到以下变量:OpenSplice_INCLUDE_DIRKERNEL_LIBRARYDCPSISOCPP_LIBRARYDCPSCPP_LIBRARY。其中哪些设置为 NOTFOUND? 【参考方案1】:

我在 Ubuntu 20.04 和 OpenSplice 6.10.3p1 上遇到了同样的问题

我只是在安装目录中获取 release.com 文件,然后按照@Tsyvarev 的建议转到每个“ch”文件夹并从那里运行cmake . && make

CMake 之后运行成功。

【讨论】:

以上是关于构建 dds-tutorial-cpp-ex 时未找到 OpenSpliceConfig.cmake 或 opensplice-config.cmake的主要内容,如果未能解决你的问题,请参考以下文章

构建解决方案时未构建 Visual Studio 特定项目

构建 .dll 时未找到 GCC 选项

使用 QT 支持构建 OpenCV 时未解析的符号 QMetaObject

iOS XCode - 为 Profile 构建时未找到 Swift 类

构建颤振 apk 时未发现 Gradle 包装器问题

构建新的 Azure Fabric 服务时未找到清单文件