How to use CMake to construct an OpenSceneGraph project?

cmake, openscenegraph

Solution

You don't need to install OpenSceneGraph system-wide. Just choose a CMAKE_INSTALL_PREFIX that suits you (eg. ~/osg).

Using the install command makes sure that everything is correctly in place (i.e. in the correct directory structure) for `FindOpenSceneGraph.cmake` (the script CMake invokes when you call `FIND_PACKAGE( OpenSceneGraph )` ) to find it.

Then, you should point any of `OSG_DIR`, `OSGDIR`, or `OSG_ROOT` as environment variable and point it to your install location, so CMake knows where to look for it.

Edit: @Hugues: I'll try to make it a bit clearer:

Setup up OpenSceneGraph:

- Get OSG source.

- When running CMake for it, choose a `CMAKE_INSTALL_PREFIX` that suits you, eg. `~/osg` if you don't want a system-wide installation in (default) `/usr/local`. Do it either by stating `-DCMAKE_INSTALL_PREFIX=/home/hugues/osg` on the command-line or by setting it using a gui tool like `ccmake` or `cmake-gui`.

- Run `make install` to build and install OSG.

- Set the environment variable `OSG_DIR` to whatever you pointed `CMAKE_INSTALL_PREFIX`. (`export OSG_DIR=<whereever_you_installed_osg>`)

Setup your project:

- In your `CMakeLists.txt`, use `FIND_PACKAGE( OpenSceneGraph )` (add desired optional arguments as desired).

- Use the resulting variables (like `${OpenSceneGraph_LIBRARIES}` in the appropriate places in your cmake file.

- Run CMake for your project.

Problem

I have just downloaded the OpenSceneGraph source, unzip it into "~/OpenSceneGraph-3.0.1" directory and use CMake to create an out-of-source eclipse make project in "~/OpenSceneGraph-3.0.1-build-eclipse-cdt" directory. When I execute "make" in "~/OpenSceneGraph-3.0.1-build-eclipse-cdt" directory, OpenSceneGraph builds successfully. I have not run "sudo make install" as I do not want to install OpenSceneGraph tightly into my Ubuntu system. Now I want to use CMake to create a project using the compiled OpenSceneGraph libraries. I use the following codes in 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} ) ``` But it seems that OpenSceneGraph could not be found by CMake. Does anyone know how CMake could find the compiled OpenSceneGraph libraries in the "~/OpenSceneGraph-3.0.1-build-eclipse-cdt" directory and use it to create projects as if I have tightly installed OpenSceneGraph using "sudo make install". Thanks for any suggestion.

Original source