如何使用CMake构建OpenSceneGraph项目?

问题描述:

我刚刚下载了OpenSceneGraph源代码,将其解压到 “〜/ OpenSceneGraph-3.0.1”目录中,并使用CMake创建一个out-of-source eclipse make项目“〜/ OpenSceneGraph-3.0.1-build -eclipse-cdt“ 目录。当我执行在 “使” “〜/ OpenSceneGraph的-3.0.1-集结Eclipse的CDT” 目录下,建立OpenSceneGraph的成功 。我没有运行“sudo make install”,因为我不想 将OpenSceneGraph安装到我的Ubuntu系统中。如何使用CMake构建OpenSceneGraph项目?

现在我想用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}) 

但似乎OpenSceneGraph的不能用CMake的发现。

有谁知道的CMake如何能找到编译OpenSceneGraph的 库中的“〜/ OpenSceneGraph的-3.0.1-集结Eclipse的CDT”目录,并 使用它来创建项目,就好像我一直在使用安装紧密OpenSceneGraph的 “sudo make install”。感谢您的任何建议。

+0

您做出了哪些改变才能使其发挥作用? – 2013-02-24 22:43:36

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

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

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

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

设置了OpenSceneGraph的:

  1. 获取OSG源。
  2. 当运行CMake的它,选择CMAKE_INSTALL_PREFIX适合你的,如。 ~/osg如果您不想在(默认)/usr/local中进行系统范围的安装。通过在命令行中指定-DCMAKE_INSTALL_PREFIX=/home/hugues/osg或者使用像ccmakecmake-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. 用在适当的地方将结果变量(如${OpenSceneGraph_LIBRARIES}在cmake的文件。
  3. 为您的项目运行CMake。
+0

CMakeLists.txt如何看起来像那样?对不起,我不明白你的指示。 – 2013-02-24 22:43:17

+2

@Hugues希望我的扩展答案更清晰 – 2013-02-26 11:28:41