@furgalep this is not what would solve my problem, but it led me to the epiphany that does:

The following, our current procedure, is evil:
```
link_directories( ${CATKIN_DEVEL_PREFIX}/lib )
cs_add_library(${PROJECT_NAME}_dependency_tracker src/dependency_tracker.cc)
add_dependencies(${PROJECT_NAME}_dependency_tracker glog_src)
target_link_libraries(${PROJECT_NAME}_dependency_tracker glog)
```
Because it will pass the flag "-lglog" downstream, which will of course fail unless we define its library path. Instead, we should do this:
```
cs_add_library(dependency_tracker src/dependency_tracker.cc)
add_dependencies(dependency_tracker ceres_src)
target_link_libraries(dependency_tracker
  ${CATKIN_DEVEL_PREFIX}/lib/libceres${CMAKE_SHARED_LIBRARY_SUFFIX})
```
Funny enough, suitesparse has been doing this all along, except using static linkage.