compiling vxl - VisionSystemsInc/voxel_globe GitHub Wiki

TL;DR

./just vxl

All the dependencies for VXL are already in the VXL docker which, including the build system (Cmake + Ninja). This command will build and "install" VXL for all the containers to use.


VXL is compiled once in Debian 8 and mounted into all the other containers. This works because all the existing docker images that need VXL are based off of Debian 8. If this were to change, a different solution will need to be considered.

Compiling VXL

To run the VXL compile script, run

./just vxl

On the first run, CMake will run and compile VXL. As with most CMake projects, when the CMake files are edited, CMake will Re-Run on ./just vxl and be updated. However, there are certain corner cases in VXL when CMake does not auto run (usually when an auto discover is used to scan a directory for files). In this case you will want to force CMake to rerun. To do this

./just vxl-cmake
./just vxl

And CMake will be run, and you can compile VXL like normal.

Accessing vxl files

Running ./just vxl-debug or most other ./just debug {service name} commands will mount VXL inside a new container. Once you have entered the container (happens automatically) the following directories will contain VXL artifact:

  • /vxl_src - Mount of VXL source
  • /vxl - Contains all the binary artifacts
  • /vxl/bin - Contains all the executables, such as boxm2_ocl_render_view
  • /vxl/lib - Contains all the static libraries
  • /vxl/lib/python2.7/site-packages/vxl - Contains the BRL python package for vxl
  • /vxl/share/vxl - Contains all OpenCL kernel code needed for JIC and auxiliary text files for running VXL

Docker problems with CMake

On Windows and Mac only, if you put your computer to sleep, the clock inside of the Docker VM will stop counting. The result is the time is out of sync, and files may appear to be modified in the future. When CMake runs in this situation, it will rerun, see the bad timestamps, and rerun again, and repeat (essentially running infinitely, or at least until enough time has passed that the files no long appear to be from the future). This is an annoying Docker Beta bug, and the current solution is to restart the docker daemon and then everything will run as normal.

⚠️ **GitHub.com Fallback** ⚠️