【发布时间】: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 非常不适合多行代码或日志。相反,将此类代码/日志添加到问题帖子本身。
-
酷我将您的建议和我们的讨论移至帖子本身。我将删除这些消息,因为 stackoverflow 建议避免在 cmets 中进行扩展讨论。你也可以做到。 :) 感谢您的建议,我是这个平台的新手,所以这很有帮助。
-
嗯,消息
Could not find OpenSplice DDS,正如脚本报告的问题一样,并没有它可能的帮助:它不包含实际搜索的信息。您可以查看构建目录中的CMakeCache.txt文件并在那里找到以下变量:OpenSplice_INCLUDE_DIR、KERNEL_LIBRARY、DCPSISOCPP_LIBRARY和DCPSCPP_LIBRARY。其中哪些设置为 NOTFOUND?
标签: c++ cmake data-distribution-service opensplice