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.