Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ogre和CMake出错_Cmake_Ogre - Fatal编程技术网

Ogre和CMake出错

Ogre和CMake出错,cmake,ogre,Cmake,Ogre,我在Ubuntu12.04上安装了Ogre3D1.8.1(源代码包),一切都很顺利(我在Ogre界面上运行了一些示例)。然而,我在编译一个需要OpenCV、ArUco和Ogre库的外部项目()时遇到了一个问题。当我运行项目的CMake时,我收到以下信息: CMake Error at CMakeLists.txt:46 (find_package): By not providing "FindOGRE.cmake" in CMAKE_MODULE_PATH this project has a

我在Ubuntu12.04上安装了Ogre3D1.8.1(源代码包),一切都很顺利(我在Ogre界面上运行了一些示例)。然而,我在编译一个需要OpenCV、ArUco和Ogre库的外部项目()时遇到了一个问题。当我运行项目的CMake时,我收到以下信息:

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

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

OGREConfig.cmake
ogre-config.cmake

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


-- Configuring incomplete, errors occurred!
我知道FindOGRE.cmake在哪里,它在/usr/local/lib/OGRE/cmake中,但我不知道如何告诉cmake查找该文件夹并解决此问题。

您只需要使用命令行选项和变量:

cmake . -DCMAKE_MODULE_PATH=/usr/local/lib/OGRE/cmake

为了记录在案,另一种解决方案是直接在CMakeLists.txt中添加模块路径。例如(在Debian 9上测试):


只需确保在调用find_package之前添加行。

对于我来说,它只适用于在
find_package
之前在
CMakeLists.txt
中设置以下内容:

set(OGRE_DIR /usr/share/OGRE/build/sdk/CMake)
请注意,
CMake
目录是包含
OGREConfig.CMake
的目录。出于某种原因,我的CMake忽略了
CMake\u模块\u路径


也许,对某人有一些帮助

对我来说,这个解决方案适用于manjaro:

set(CMAKE_MODULE_PATH "/usr/lib/OGRE/cmake;${CMAKE_MODULE_PATH}")
find_package(OGRE QUIET)

if (OGRE_FOUND)
    include_directories( ${ogre_INCLUDE_DIR})
    link_directories(${OGRE_LIBRARIES})
    message(STATUS "OGRE: FOUND")
else()
    message(STATUS "OGRE: NOT FOUND")
endif()

正如你所说,我尝试了-D命令,但仍然遇到了同样的问题。我还尝试使用CMake gui。我用/usr/local/lib/OGRE/CMAKE路径填充了CMAKE_INSTALL_前缀,用OGRE安装文件夹填充了OGRE_目录。是这样吗?即使如此,也会出现同样的错误。如果您执行
进行安装,那么
CMAKE\u INSTALL\u前缀
就是您将当前项目安装到的位置,因此它在这里并不相关
CMAKE_模块_路径
是一个目录列表,当您使用
find_包
时,CMAKE在其中检查“FindXXX.CMAKE”文件。最后,将
OGRE_DIR
(或
CMAKE_PREFIX_PATH
)设置为OGRE安装DIR需要一个名为OGREConfig.CMAKE或OGRE-config.CMAKE的文件才能存在。如果ogre提供了它们,其中一个就存在了(它们是通过
install(export…
)生成的)。这真的是食人魔应该提供的,而不是FindOGRE.cmake我想。嗨。我正在使用“LinuxMint14”。诀窍是找到cmake食人魔文件。在我的系统中,cmake的命令行是
cmake-DCMAKE\u MODULE\u PATH=/usr/share/OGRE/cmake/modules/
set(CMAKE_MODULE_PATH "/usr/lib/OGRE/cmake;${CMAKE_MODULE_PATH}")
find_package(OGRE QUIET)

if (OGRE_FOUND)
    include_directories( ${ogre_INCLUDE_DIR})
    link_directories(${OGRE_LIBRARIES})
    message(STATUS "OGRE: FOUND")
else()
    message(STATUS "OGRE: NOT FOUND")
endif()