【问题标题】:How to use CMake to construct an OpenSceneGraph project?如何使用 CMake 构建 OpenSceneGraph 项目?
【发布时间】:2012-04-30 13:32:12
【问题描述】:

我刚刚下载了OpenSceneGraph源码,解压到 “~/OpenSceneGraph-3.0.1”目录并使用CMake创建一个out-of-source eclipse 在“~/OpenSceneGraph-3.0.1-build-eclipse-cdt”中制作项目 目录。当我执行“make”时 "~/OpenSceneGraph-3.0.1-build-eclipse-cdt" 目录,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 “~/OpenSceneGraph-3.0.1-build-eclipse-cdt”目录中的库和 用它来创建项目,就好像我已经紧紧地安装了 OpenSceneGraph 使用“sudo make install”。感谢您的任何建议。

【问题讨论】:

  • 您做了哪些更改以使其发挥作用?

标签: cmake openscenegraph


【解决方案1】:

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

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

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

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

设置 OpenSceneGraph:

  1. 获取 OSG 源代码。
  2. 为它运行 CMake 时,选择适合您的CMAKE_INSTALL_PREFIX,例如。 ~/osg 如果您不想在(默认)/usr/local 中进行系统范围的安装。通过在命令行中声明-DCMAKE_INSTALL_PREFIX=/home/hugues/osg 或使用ccmake 或cmake-gui 等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. 在 cmake 文件的适当位置使用生成的变量(如 ${OpenSceneGraph_LIBRARIES}。
  3. 为您的项目运行 CMake。

【讨论】:

  • CMakeLists.txt 看起来怎么样?很抱歉,我不明白您的指示。
【解决方案2】:

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

然后把文件FindOpenSceneGraph.cmake放到src/cmake目录下。

FindOpenSceneGraph.cmake 可以在here找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    • 2018-03-26
    相关资源
    最近更新 更多