Hi David --
Does it make a difference if you specify the variable type as PATH?
-DosgWorks_Dir:PATH="<directory>"
As long as <directory> contains the file osgWorksConfig.cmake, this should work, and you should end up with an entry like this in your CMakeCache.txt file:
osgWorks_DIR:PATH=<directory>
I noticed you're setting BUILD_SHARED_LIBS to OFF, and I haven't tried to do a static build of osgWorks and osgBullet. Do you encounter the same issue if you build shared?
FYI, I notice you're setting a lot of CMake variables on your CMake command line. I use the cmake -C option to specify a config file that prepopulates the cmake cache. Then you can have a file that contains normal CMake script to set variables, such as this:
set( osgWorks_DIR "<osgWorks dir>" CACHE PATH "" )
set( OSG_DIR "OSG dir>" CACHE PATH "" )
set( BULLET_ROOT "<Bullet dir>" CACHE PATH "" )
Etc.
I hope that helps.
-Paul