3

我刚刚下载了OpenSceneGraph源码,解压到“~/OpenSceneGraph-3.0.1”目录下,使用CMake在“~/OpenSceneGraph-3.0.1-build-eclipse-cdt”中创建一个out-of-source eclipse make项目“ 目录。当我在“~/OpenSceneGraph-3.0.1-build-eclipse-cdt”目录中执行“make”时,OpenSceneGraph 构建成功。我没有运行“sudo make install”,因为我不想将 OpenSceneGraph 紧密安装到我的 Ubuntu 系统中。

现在我想使用 CMake 使用已编译的 OpenSceneGraph 库创建一个项目。我在 CMakeLists.txt 中使用以下代码:

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT( test_proj )
FIND_PACKAGE(OpenSceneGraph)
ADD_EXECUTABLE(test test.cpp )
INCLUDE_DIRECTORIES(${OPENSCENEGRAPH_INCLUDE_DIRS})
TARGET_LINK_LIBRARIES(test ${OPENSCENEGRAPH_LIBRARIES} )

但似乎 CMake 找不到 OpenSceneGraph。

有谁知道 CMake 如何在“~/OpenSceneGraph-3.0.1-build-eclipse-cdt”目录中找到已编译的 OpenSceneGraph 库,并使用它来创建项目,就好像我使用“sudo make install”紧密安装了 OpenSceneGraph 一样。感谢您的任何建议。

4

2 回答 2

5

您不需要在系统范围内安装 OpenSceneGraph。只需选择一个适合您的 CMAKE_INSTALL_PREFIX(例如 ~/osg)。

使用 install 命令可确保所有内容都正确就位(即在正确的目录结构中)以便FindOpenSceneGraph.cmake(调用时 CMake 调用的脚本FIND_PACKAGE( OpenSceneGraph ))找到它。

然后,您应该将 、 或 中的任何一个指向OSG_DIR环境OSGDIR变量OSG_ROOT并将其指向您的安装位置,以便 CMake 知道在哪里查找它。

编辑: @Hugues:我会尽量让它更清楚一点:

设置 OpenSceneGraph:

  1. 获取 OSG 源。
  2. 在为它运行 CMake 时,选择一个CMAKE_INSTALL_PREFIX适合你的,例如。~/osg如果您不想在 (default) 中进行系统范围的安装/usr/local。通过-DCMAKE_INSTALL_PREFIX=/home/hugues/osg在命令行上声明或使用 gui 工具(如ccmakecmake-gui.
  3. 运行make install以构建和安装 OSG。
  4. 将环境变量设置OSG_DIR为您所指的任何内容CMAKE_INSTALL_PREFIX。( export OSG_DIR=<whereever_you_installed_osg>)

设置您的项目:

  1. 在您的CMakeLists.txt, 中使用FIND_PACKAGE( OpenSceneGraph )(根据需要添加所需的可选参数)。
  2. 使用生成的变量(例如${OpenSceneGraph_LIBRARIES}在 cmake 文件中的适当位置。
  3. 为您的项目运行 CMake。
于 2012-04-19T08:28:16.387 回答
0

在您的 CMakeLists.txt 中添加以下命令:
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

然后将文件FindOpenSceneGraph.cmake放在src/cmake目录中。

FindOpenSceneGraph.cmake 可以在这里找到。

于 2021-08-25T04:01:54.727 回答