构建 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_DIR
、KERNEL_LIBRARY
、DCPSISOCPP_LIBRARY
和DCPSCPP_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的主要内容,如果未能解决你的问题,请参考以下文章
使用 QT 支持构建 OpenCV 时未解析的符号 QMetaObject