Skip to content

Building the CPP Modules

tobspr edited this page Jan 6, 2016 · 26 revisions

The pipeline provides several C++ modules. There is a python implementation of them, too, but it is slower, and not all features are implemented. You should choose the C++ build option if possible.

Required for building the C++ modules:

  • cmake 2.6 or newer
  • Panda3D build prerequisites, described in the Panda3D README

You need these even if you have a precompiled Panda3D release.

After you installed all prerequisites, you can simply run the setup.py. It should take care of compiling all modules.

Troubleshooting

The setup.py script attempts to build native code automatically for you, but may run into issues.

If you see:

Could NOT find Panda (missing:  PANDA_LIBRARIES PANDA_INCLUDE_DIR)
CMake Error at CMakeLists.txt:126 (message):
  Could not find panda3d headers!

... then be sure the environment variables PATH, PYTHONPATH, and LD_LIBRARY_PATH (Linux) or DYLD_LIBRARY_PATH (Mac OS X) can find Panda3D libraries and binaries, and try setup.py again.

If setup still fails with Setup failed, you will need to manually fix up the cmake configuration:

  • chdir into RenderPipe/Code/Native/<arch> (where matches the OS and CPU of your system, e.g. linux_amd64)
  • run cmake-gui .. (if you don't have it, install it)

NOTE: run setup.py first, even if you will use cmake-gui from scratch, since it sets up some basic entries for you. If you're clever enough, check Code/Native/Scripts/setup.py to see how it constructs the cmake command line.

Super-quicky cmake-gui tutorial

cmake-gui will highlight entries it failed to detect in red.

Edit these to be correct.

Click Configure to try again. cmake will re-run the discovery logic and try again, using the new entries or recalculating removed entries.

If this succeeds (no red text), then click Generate. When that succeeds, go back and run setup.py again to finish.

Also, the entire <arch> directory under Code/Native/ is auto-generated; if you get stuck somewhere, you can delete it to start fresh.

  • Could not find Panda3D variables?

You may need to edit the PANDA_... entries to match your build. For example, on Linux systems:

> `PANDA_INCLUDE_DIR` is `.../panda3d/built/include`
> `PANDA_LIBRARY_<foo>` is `.../panda3d/built/lib/lib<foo>.so`
  • Mismatched Python?

In the configuration step, if you see:

-- Found PythonLibs: .../libpython3.4m.so (found version "3.4.0")
-- Found PythonInterp: .../python (found version "2.7.9")

Then, you need to correct this. Edit the PYTHON_INCLUDE_DIR and/or PYTHON_LIBRARY entries to match your system. (On Linux, for example, you can use dpkg -L libpython2.7 to find out where the *.so lives.)

  • Eigen libraries

After all such corrections, re-run setup.py again to finish the setup.