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 asboxm2_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.