CMake y orden de enlace dependiente de bibliotecas compartidas.

Tengo algunos componentes pequeños que estoy creando como bibliotecas compartidas para mi aplicación principal. Vamos a usar un ejemplo deliba ylibb. Cada uno está construido dentro de su propio subdirectorio de la siguiente manera:

add_library(liba SHARED a.cpp)

Luego, en la carpeta del proyecto raíz, necesito vincular mi aplicación principal a ambas.

include_directories(a)
include_directories(b)
add_executable(dummy dummy.cpp)
target_link_libraries(dummy a b)

CMake funciona bien con esto, y mi aplicación compila pero no puede enlazar. El problema es que b hace referencia a. Si proporciono el orden de las bibliotecas al enlazar como

target_link_libraries(dummy b a)

El programa compila y enlaza muy bien.

Cuando este tipo de sistema comienza involucrando una interdependencia más compleja de las bibliotecas, comienza a ser imposible incluso si las dependencias son acíclicas. ¿Cómo manejo el paso de enlace aquí? ¿Hay algún truco para ordenar bibliotecas para enlazar en CMake?